2017-07-05 3 views
0

=と?を削除したいですか? PHPのgetメソッドのURLから取得します。私はそれが次のようになりたい=と?を削除します。 htaccessなしでPHPのgetメソッドから

www.example/test/?page=3 

:私は私のウェブサイトのページネーション構造に働いていると、現在、これはURLがどのように見えるかです

www.example/test/3 

これが発生PHPコードですURL。

<?php 
    class Pagination { 
    public $current_page; 
    public $per_page; 
    public $total_count; 
    public $pages_articles; 

    public function __construct($page=1, $per_page=20, $total_count=0) { 
    $this->current_page = (int)$page; 
    $this->per_page = (int)$per_page; 
    $this->total_count = (int)$total_count; 
    $this->pages_articles=array(
    '<div class="article-loop"><img src="http://i.imgur.com/CmU3tnl.jpg"> </div>', 
'<div class="article-loop"><img src="http://i.imgur.com/TDdxS9H.png"></div>', 
'<div class="article-loop"><img src="http://i.imgur.com/39rpmwB.jpg"></div>', 
'<div class="article-loop"><img src="http://i.imgur.com/1lBZQ1B.png"></div>', 
'<div class="article-loop"><img src="https://i.imgur.com/Y5Ld4Qfh.jpg"></div>', 
'<div class="article-loop"><img src="http://i.imgur.com/8HumESY.jpg"></div>', 
'<div class="article-loop"><img src="http://i.imgur.com/CqCZBvk.png"></div>', 
'<div class="article-loop"><img src="http://i.imgur.com/wQVPRVp.png"></div>'); 
} 

    public function offset() { 
return ($this->current_page - 1) * $this->per_page; 
    } 
    public function total_pages() { 

return ceil($this->total_count/$this->per_page); 
    } 
    public function previous_page() { 
return $this->current_page - 1; 
    } 
    public function next_page() { 
return $this->current_page + 1; 
    } 
    public function has_previous_page() { 
return $this->previous_page() >= 1 ? true : false; 
    } 
    public function has_next_page() { 
return $this->next_page() <= $this->total_pages() ? true : false; 
    } 
} 
    $page = !empty($_GET['page']) ? (int)$_GET['page'] : 1; 
    $per_page = 3; 
    $total_count=8; 
    $pagination = new Pagination($page, $per_page, $total_count); 
    ?> 

<html> 
<body> 
<div> 
<?php 
    $i = $pagination->offset() ; 
    $limit = $pagination->per_page; 
    while($i<$pagination->total_count && $limit>0) { 
    echo $pagination->pages_articles[$i]."<br>"; 
    $i++; 
    $limit--; 
    } 
    ?> 
    </div> 
    <ul> 
    <?php 
    if($pagination->has_previous_page()) { 
    echo '<li style="display:inline"><a href="index.php?page='.$pagination->previous_page().'">&laquo;</a></li>'; 
    } else { 
    echo '<li style="display:inline" class="disabled"><a href="#">&laquo; </a></li>'; 
    } 
    for($i=1; $i<=$pagination->total_pages(); $i++) { 
    echo '<a href="index.php?page='.$i.'"><li style="display:inline; margin-left:5px; margin-right:5px">'.$i.'</li></a>'; 
    } 
    if($pagination->has_next_page()) { 
    echo '<li style="display:inline"><a href="index.php?page='.$pagination->next_page().'">&raquo;</a></li>'; 
    } else { 
    echo '<li style="display:inline" class="disabled"><a href="#">&raquo;</a></li>'; 
    } 
    ?> 
</ul> 
</body> 
</html> 

https://3v4l.org/i4GZQ

+3

**自分でコードを書くことができます**。あなたが問題を抱えている場合は** [もっと研究している**](https://meta.stackoverflow.com/q/261592/1011527)の後**あなたが試したものを投稿してください** **動作しておらず、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を提供しています。 [質問する](http://stackoverflow.com/help/how-to-ask)の良い質問をお読みください。 [ツアーに参加する](http://stackoverflow.com/tour)と[this](https://meta.stackoverflow.com/q/347937/1011527)を必ず読んでください。 –

+0

期限切れになる可能性のある外部リンクではなく、削除された、または削除された、または未知の第三者によって管理されているサイトにコードを追加することはできません。質問を編集して、質問に関連するコードを手元に追加して、人々が調査、再現、問題解決に役立てることができます。 – tadman

+0

フレームワークはこれをルーティングレイヤーを通して行います。そのルーティングレイヤーは '.htacess'タイプのルールに依存して、すべてを' index.php'に書き換えます。これを回避する方法はありません。これはサーバーの仕組みです。 '/ test/3'が実際にその文字通りのパス以外のものへの参照であることを理解できないように設定されていれば、それはただ404になります。 – tadman

答えて

1

あなたのWebサーバは、PHPのプログラム何とかにURLをマップする必要があります。

伝統的な方法は、ファイル拡張子.phpを使用してURLを直接そのURLにマップする方法ですが、目的の効果は得られません。

この効果を得るには、 mod_rewriteの使用が一般的であり、mod_rewrite指令を.htaccessファイルに入れることも一般的です。これはthe Apache manualはそれについて言いたいことです:

あなたがメインサーバの設定ファイルをhttpdがへのアクセスを持っている場合は、完全に.htaccessファイルを使用しないでください。 .htaccessファイルを使用すると、Apache HTTPサーバーが遅くなります。 .htaccessファイルに含めることができるディレクティブは、ディレクトリブロックでより適切に設定できます。これは、パフォーマンスが向上して同じ効果が得られるためです。

だから、そのアドバイスに従うと、あなたのApacheの設定ファイルに.htaccessに入れたくないmod_rewriteディレクティブを置くことができます。

あなたがApacheを使用しており、それらのファイルにアクセスできるとします。

+0

どのようにmod_rewriteでURLを書き直すのですか?私は非表示にしたいのですか?ページ= –

+0

https://stackoverflow.com/tags/mod-rewrite/infoあなたが知る必要があるすべてのものへのリンク。あなたは.htaccessを排除していたので、私はあなたが解決策としてmod_rewriteを特定したと仮定し、Stackoverflowに関する多くの、多くのガイドを見つけました。 – Quentin

+0

私はそれがhtaccessではなくphpを通してそれを行うのがよりクリーンであろうと言われました。 –

関連する問題