0
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /?a=$1 [L]
RewriteRule ^([^/]*)/([^/]*)$ /?a=$1&app=$2 [L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

これにより、すべての URL が検索エンジンで使いやすくなると思われますが、問題は、誰かがhttp://pattersoncode.ca/realurlhere/にアクセスすると、実際のディレクトリであってもエラー ページにリダイレクトされることです。とにかくこれを止めることはありますか?http://pattersoncode.ca?a=realurlhereにアクセスしようとしていると考えているに違いありません。

4

1 に答える 1

0

これは、次の行の正規表現が正しくないために発生しています。

RewriteRule ^([^/]*)$ /?a=$1 [L]

/が見つかるまで 0 個以上の文字に一致するもの。それを次のように変更します。

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

そして、問題は修正されます。私の答えでは、末尾のスラッシュ オプションを作成したので、/realurlhere/との両方/realurlhereがサポートされます。

于 2013-07-18T07:19:41.860 に答える