.htaccess mod_rewrite对于漂亮的网址不起作用

时间:2012-08-03 21:13:18

标签: php .htaccess mod-rewrite

尝试将www.example.com/test.php?archives=testing转到www.example.com/archives/testing

根据godaddy他们默认启用了mod_rewrite

这是我的.htaccess文件:

rewriteengine on
rewritecond %{HTTP_HOST} ^example.com$
rewriterule ^example\/(.*)$ "http\:\/\/www\.example\.com\/$1" [R=301]
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^archives/(\w+)$ test.php?archives=$1 [L]

然而这不起作用,当我去www.example.com/archives/test我得到404,建议

4 个答案:

答案 0 :(得分:2)

我刚刚在评论中留下了这个,但我不妨把它放在这里,所以它看起来更容易。我为那些随着时间的推移帮助他人的人写了一个答案,最后这并不是你要求的答案,而是它更多地是朝这个方向发展的垫脚石。最初的问题被问到如何处理短网址字符串并让它们像你想要的那样工作,而是复制并粘贴这里的答案。我会让你去那里阅读它。

不言而喻,你需要根据自己的特定需求改变规则,但最终会达到让你达到目标的目的。

PHP dynamic DB page rewrite URL

答案 1 :(得分:1)

您需要一些重写条件来指定何时使用此规则。没有它们,您将无限期地继续运行相同的重写规则,从而给您一个错误。尝试:

RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^archives/(\w+)$ test.php?archives=$1 [L]

答案 2 :(得分:0)

这个怎么样:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^archives/(.+)$ /test.php?archives=$1 [L]
</IfModule>

答案 3 :(得分:0)

如果没有明确表示你想从重写中得到什么,我建议:

Options -MultiViews
ErrorDocument 404 default
RewriteBase /