我将在这里解释我的问题:
http://mysite.com/movie/20000
应该改写为
http://mysite.com/movie.php?id=20000
我的htaccess文件:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie/([0-9]+)$ movie.php?id=$1
在我的localhost WAMP安装上,这很好用,但是当我把它放在我的linux主机上时,它并不完全有效。它确实转到了movie.php页面,但它似乎没有给出GET参数id。
修改:
如果我使用
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie([0-9]+)$ movie.php?id=$1
然后
http://mysite.com/movie20000
转到正确的页面,但我希望/movie/20000
而不只是/movie20000
我的主人似乎也会自动重新访问mysite.com/movie
到mysite.com/movie.php
答案 0 :(得分:3)
经过很长一段时间的搜索,我把一些可爱的头发拉出来,我找到了解决办法。
我刚刚添加了
Options -MultiViews
到我的htaccess文件并修复它。
为什么呢?因为.php被添加到没有扩展名的网址,我真的不需要。
答案 1 :(得分:0)
这应该有用。
RewriteRule ^movie/([0-9]+)$ http://mysite.com/movie.php?id=$1 [NC,L]
不要忘记[NC,L]这意味着不区分大小写,最后一条规则......如果不这样做,它将继续处理您的htaccess规则,可能会触发其他规则。
不过,下面的内容是很好的建议.... :)
检查Rewrite模块是否加载了apache。在httpd.conf文件中查找这一行:
LoadModule rewrite_module modules/mod_rewrite.so
检查您的apache配置是否允许系统或虚拟主机定义中的.htaccess文件。
此外,使用更简单的重写测试捕获所有并单独测试以查看它是否正常工作(删除htaccess文件中的所有其他内容以限制测试):
RewriteEngine On
RewriteRule ^(.*)$ http://www.google.com [L,R=301]
如果正确设置了apache的配置,那么对您网站的任何请求都应该转到Google。