1

我遵循了 desiquintans教程如何清理 url。在我的情况下 www.mySite.com/detail.php?id=324 并且它工作得很好,除了它会影响其他页面。

这就是我的 .htaccess 文件的样子:

RewriteBase /
RewriteEngine on
Options All -Indexes
DirectoryIndex index.php index.html index.htm
RewriteRule ^([0-9]+)$ detail.php?id=$1
RewriteRule ^([0-9]+)/$ detail.php?id=$1

最后一行让 Chrome 在某些具有不同路径的页面上警告我重定向周期。它不应该只影响带有'detail.php?id='扩展名的页面吗?

4

1 回答 1

6

我怀疑你的问题是因为你的选择,试试这个。

Options +FollowSymLinks -MultiViews -Indexes

DirectoryIndex index.php index.html index.htm

RewriteEngine On
RewriteBase /

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

我还将您的规则分成一个/?,使最后一个斜杠成为可选的,因此它应该适用于两者。

并且有两个条件可以防止您重定向现有的文件和文件夹。

请记住,您的规则应仅影响以数字开头和结尾的 URI,带有和不带有结尾斜杠,例如:

 http://domain.com/1234/
 http://domain.com/1234
 http://domain.com/200
 http://domain.com/420/

它不会影响任何其他 URL。

于 2013-09-08T14:03:09.873 回答