2

试图让 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

4 回答 4

2

我只是在评论中留下了这个,但我不妨把它放在这里,这样看起来更容易。我为随着时间的推移帮助他人的人写了一个答案,最后这并不完全是您所要求的答案,但它更像是朝着这个方向发展的垫脚石。最初的问题是如何使用短 url 字符串并使它们以您正在寻找的方式工作,而是在此处复制并粘贴该答案。我会让你去那里读一读。

不言而喻,您需要根据您的特定需求稍微更改规则,但它最终会达到将您带到您想去的地方的目的。

PHP 动态数据库页面重写 URL

于 2012-08-03T21:39:34.090 回答
1

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

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

RewriteRule ^archives/(\w+)$ test.php?archives=$1 [L]
于 2012-08-03T21:25:40.403 回答
0

这个怎么样:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^archives/(.+)$ /test.php?archives=$1 [L]
</IfModule>
于 2012-08-03T22:03:21.393 回答
0

如果没有非常清楚你想从你的重写中得到什么,我建议:

Options -MultiViews
ErrorDocument 404 default
RewriteBase /
于 2012-08-03T22:14:57.723 回答