2016-07-20 5 views
0

私はきれいなURL上の複数のスレッドを通過しましたが、それでも私はそれを混乱させる。私はコアPHPのWebサイトでクリーンなURL戦略を使用したい。私は複数のURLの私の.htaccessファイルを変更しました。しかし、私の次のコードは、コードの上コアできれいなURL

# Turn on the Rewrite Engine 
RewriteEngine on 
# Rewrite for buyleads.php 
RewriteRule ^buyleads buyleads.php [NC,L] 
## NC makes the rule non case sensitive 
#L makes the last rule that this specific condition match 

# Rewrite for search.php?u=xxx 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ search.php?cat=$1 [L] 



# Rewrite for search.php?u=xxx&subcat=xxx 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ search.php?cat=$1&subcat=$2 [L] 
# Rewrite for detail.php?u=xxx 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^detail/([a-z0-9]+)$ /detail.php?id=$1 [L] 

質問1. search.phpのためにのみ動作し、私はwww.sitename.com/detail/29(detail.phpコード)を入力した場合1ページ(1つのURL)でのみ動作しますwww.sitename/29(search.php)のように動作します。私が行った間違い

質問2.私はまた、このようなすべてのURLを.htaccessファイルだけで作ることが本当に可能であることを知りたいと思いますか?コアPHPで作成する方法はありますか?

質問3.最後に、ユーザーをクリックした後、CLickのように.htaccessを使ってURLをクリーンアップする方法をwww.sitename.com/34/50にする必要があることを知りたいと思います。ご質問について事前

+0

で、元のURL /パスを取得することができますと 'RewriteCond'です。私はあなたが書き換えをスキップする時期について各ブロックに条件を1つだけ追加する必要があると思います。現在のところ、すべてのリクエストは最初のブロック 'search.php'で満たされます。ヒント:URIと一致するstrringは、明らかに他の方法があるかもしれませんが、私は今考えていることがあります。 – Jigar

+0

もっと教えていただけますか? – nehaJ

答えて

3

ありがとう:

  1. はあなたの第二の書き換えルールは、第1のカテゴリを検索するように、あなたの第3の規則に到達することはありませんdetail/で始まるURLを除外するものではないdetailサブカテゴリ29(具体例)。 detail/を2番目のルールから除外できますが、おそらく2番目と2番目のルールの順序を変更して機能させることもできます。
  2. はい、あなたはすべてのURLを書き換えて、あなたのロジックをPHPですべて持つことができます。元のパスをパラメータとして送信し、PHPで解析/解析することができます。
  3. まず、リンクを正しく生成してください。そうすればリダイレクトする必要はなく、リダイレクト時にページが永続的に移動されたことを検索エンジンに伝える必要はありません。

ポイント2用の小さな例:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?url=$1 [L] 

は今、すべてのURLが書き換えられますし、あなたのスクリプトで使用すると、.htaccess` `詳細については、こちらをご覧ください$_GET['url']

+0

回答ありがとうございますが、ポイント1と3をもう少し説明してください。また、私はそれで何をしましたか? – nehaJ

+0

2行目のルールの前にこの行 'code' RewriteRule ^(detail)($ | /) - [L]' code'を追加して順序を変更しようとしましたが、objenが見つかりませんでした。 – nehaJ

関連する問題