我试图让Apache2.2 mod_rewrite获得干净的urls。我有一些链接,比如
<ul>
<li><a href="index.php?view=pageName">Page Name</a></li>
<li><a href="index.php?view=pageName2">Page Name2</a></li>
<li><a href="index.php?view=pageName3">Page Name3</a></li>
</ul>而url出来的时候
http://example.com/user/index.php?view=pageName我想把地址栏里的网址清理到这个
http://example.com/user/pageName编辑:如果有什么用的话,这就是我的httpd.conf中的东西。
<Directory "C:/Apache2.2/htdocs/user">
Options Indexes FollowSymLinks
AllowOverride all
order allow,deny
Allow from all
</Directory>使用phpinfo(),我已经验证了mod_rewrite是加载的,并且我的.htaccess (用户文件,而不是根.htaccess)中有这个,而不是apache上的虚拟用户。
RewriteEngine on
RewriteBase /user/ #Edited rewrite base added in, but not helping much.
RewriteOptions Inherit
RewriteRule ^/user/([a-zA-Z])/?$ index.php?view=$1 [NC,L] 编辑:我的.htaccess的其余部分
#Ensure browser reads Header
Header unset ETag
FileETag None
Header unset Last-Modified
#Set caching expires
Header set Expires On
ExpiresDefault "access plus 30 days"
#gzip
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>在html结构中相同且不能正常工作的所有菜单链接上,都不能正常工作。IE:它将我发送到http://example.com/user/?view=pageName,但正在加载根HTML文件内容。
如果我改变了这一行
RewriteRule ^/user/([a-zA-Z])/?$ index.php?view=$1 [NC,L]至
RewriteRule ^index\.php$ http://www.google.com [NC,L]我会像预期的那样被送到谷歌。很明显,我在匹配和替换方面肯定做错了什么,但我做错了什么呢?提前谢谢。
编辑:、access.log和error.log都没有错误。
发布于 2011-06-03 00:05:17
固定:必须更改HTML样式以用作
<a href="pageName">Page Name</a>然后在.htaccess
RewriteEngine On
RewriteOptions Inherit
ReWriteBase /user/
RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?view=$1 [QSA,L]还必须从apache的mod_cache.so中禁用httpd.conf,因为如果有任何缓存留下,它会干扰重写。希望这有助于其他人使干净的urls工作。
发布于 2011-06-02 09:16:13
RewriteRule ^/user/([a-zA-Z]+)?$ index.php?view=$1 [NC,L]你错过了+,所以你不是在匹配单词,只是一个字符
发布于 2011-06-02 04:33:54
RewriteRule ^/user/([a-zA-Z])?$ index.php?view=$1 [NC,L] 试试这个.(去掉一个斜杠)
https://stackoverflow.com/questions/6210320
复制相似问题