我正在尝试让 Apache 2.2 mod_rewrite 获得干净的 url。我有链接,例如
<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
我想将地址栏中的 url 清理为这个
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 (用户文件,不是 root .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 没有错误。