1

これは私のテストです.htaccess

    RewriteEngine On
    Options +FollowSymLinks    

    #WWW redirect WORKS
    RewriteCond %{HTTP_HOST} !^$
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    RewriteRule ^home/$ index.php [L] #THIS RULE  WORKS
    RewriteRule ^news/(.+)/$ /news.php?page=$1 [L] #not works
    RewriteRule ^news/(.+)/$ /news.php?article=$1 [L] #not works
    RewriteRule ^news/$ news.php [L] #WORKS

私はこれを作りたい:

"news.php" => "news/"    
"news.php?page=3" => "news/3/"
"news.php?article=lorem-ipsum-3" => "news/lorem-ipsum-3/"

この url ルールでは、このような url はうまく機能しますが、私が望むものではありません:

http://www.xxxxxx.com/news/?page=3  #works
http://www.xxxxxx.com/news/?article=lorem-ipsum-2 #works

.htaccess を修正するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

私が見る唯一の問題は、同じ条件に一致する 2 つのルールがあり (Lフラグがそれ以上のルールをチェックしないようにする) /、書き換えられたパスの前に余分なものがあることです。

RewriteRule ^news/(.+)/$ news.php?page=$1 [L]
RewriteRule ^news/(.+)/$ news.php?article=$1 [L] # Will never execute

それ以外は、見た目は問題ありません。( htaccess テスターでそれらを実行したところ、正しいルールで終了しました。

明示的な正規リンクを提供しておらず、.htaccess を使用して最後に a がない場合に手動で追加していない/場合は、最後の/オプションを a でオプションにすることを検討することをお勧めします。?

RewriteRule ^news/(.+)/?$ news.php?page=$1 [L]

更新 番号のみの場合はページであり、それ以外の場合は記事であると仮定します。

RewriteRule ^news/([0-9]+)/?$ news.php?page=$1 [L]
RewriteRule ^news/(.+)/?$ news.php?article=$1 [L]
于 2013-08-02T14:44:25.490 に答える