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 回答