Php .htaccess mod_为漂亮URL重写不起作用
正在尝试获取www.example.com/test.php?archives=testing到www.example.com/archives/testing 根据godaddy的说法,默认情况下他们启用了mod_rewrite 这是我的.htaccess文件:Php .htaccess mod_为漂亮URL重写不起作用,php,.htaccess,mod-rewrite,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"
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,建议您需要一些重写条件来指定何时使用此规则。如果没有它们,您将无限期地运行相同的重写规则,从而导致错误。尝试:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^archives/(\w+)$ test.php?archives=$1 [L]
我只是在评论中留下了这个,但我还是把它放在这里,这样更容易看到。我为一个长期以来帮助过别人的人写了一个答案,最终这并不是对你所问问题的回答,但它更像是一块踏脚石。最初的问题是如何处理短url字符串,并使它们以您所寻找的方式工作,而不是将答案复制并粘贴到此处。我让你去那儿读一遍 这并不是说你需要根据你的具体需要对规则做一点修改,但它最终会达到让你达到你想要的目的 这个怎么样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^archives/(.+)$ /test.php?archives=$1 [L]
</IfModule>
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^archives/(.+)$/test.php?archives=$1[L]
如果你不清楚你想从重写中得到什么,我建议:
Options -MultiViews
ErrorDocument 404 default
RewriteBase /
什么情况下它不起作用?很可能是你的正则表达式,
([a-z]+)$
不适合你。我相信您还需要一些条件来触发规则。它必须工作,即使没有选项
行。请参阅访问
和重写
日志。Mod_rewrite无法正常工作。我以前在godaddy上托管过一个网站,在url重写方面也有一些问题,但现在工作正常,在我的htaccess文件中,我没有选项+FollowSymLinks-多视图
和RewriteBase/
,也许给我一个机会?@chris,你能给我一个关于如何触发重写的链接吗?这是我不久前给某人的一个简短url呈现的答案。它在概念上是你试图做的事情,但是为了满足你的特殊需要,必须对其进行一些修改。。Rewritecond应该在单独的行上,我正在使用电话,所以格式设置是关闭的。告诉mod rewrite这是最后一个要应用的规则的[L]标志应该与rewrite规则在同一行上,前面有一个空格。感谢您尝试过它,但在转到example.com/test.php?archives=test时没有运气,url保持不变。Mod_rewrite适用于不存在的url,因此您实际上应该将流量定向到example.com/archives/test。Mod rewrite然后默默地将URL重写为实际存在的文件,并显示该文件,而不是不存在的文件