.htaccess不是每个重写者都有效

时间:2015-12-08 14:51:53

标签: .htaccess mod-rewrite

我有以下.htaccess文件

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L]

RewriteRule ^help$ /pages/help/index.php [NC]
RewriteRule ^help/search$ /pages/help/search.php [NC]
RewriteRule ^help/support$ /pages/help/support.php [NC]
RewriteRule ^help/bugfixes$ /pages/help/bugfixes.php [NC]
RewriteRule ^help/([a-z0-9-]+)$ /pages/help/category.php?cat_slug=$1 [NC]
RewriteRule ^help/([a-z0-9-]+)/([0-9]+)/([a-z0-9-]+)$ /pages/help/article.php?cat_slug=$1&art_id=$2&art_slug=$3 [NC]

问题如下:

当我转到 localhost / help 时,它会重定向到localhost / C:/ server / htdocs,所以我没有看到索引页面。当我去 localhost / help / bugfixes 时也会发生同样的情况。

其他页面完美无缺!直到今天,/ help和/ help / bugfixes也是如此。 :/

如果我将^ help / bugfixes $更改为^ help / bugfix $(例如),则会再次显示错误修正页面。如果我将^ help $更改为^ help / help $(或任何其他内容),它也适用于索引页。

我真的不知道出了什么问题。我已经重启了几次apache,但仍然没有...我在过去2天内没有更改文件中的任何内容。

有人可以帮助我吗?

编辑:我也没有改变php-files index.php和bugfixes.php中的任何内容

1 个答案:

答案 0 :(得分:2)

试试这个htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteRule ^ /%1 [R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^help/(.*)$ /pages/help/$1.php [NC,L]
RewriteRule ^help/([^/]+)/?$ /pages/help/category.php?cat_slug=$1 [L]
RewriteRule ^help/([^/]+)/([^/]+)/([^/]+)/?$ /pages/help/artical.php?cat_slug=$1&art_id=$2&art_slug=$3 [L]