是否有可能使url重写被强制?
以下是有效的示例,http://localhost/home/转到http://localhost/index.php?page=home,但网址与用户保持一致。
我无法工作的是迫使http://localhost/index.php?page=home显示为 http://localhost/home/
我不知道我是否使用了正确的术语,但我想要它,这样如果你输入非重写的网址,我希望重写的网址出现在用户的浏览器中。
这是我到目前为止所做的工作:
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/?$ index.php?page=$1&a=$2&b=$3 [L,NC,QSA]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)$ index.php?page=$1&a=$2 [L,NC,QSA]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^([a-zA-Z0-9_]*)$ index.php?page=$1 [L,NC,QSA]
答案 0 :(得分:1)
这就是[R]标志的用途。如果你有正确的重写,你需要在你的RewriteRule末尾添加[R]到你的其他标志。
答案 1 :(得分:0)
尝试在index.php中添加一些代码。
查看$_SERVER['SCRIPT_URL']
变量以获得答案。当您在浏览器中输入“localhost / index.php?page = home”时,SCRIPT_URL
应该等于'/index.php'。如果输入“localhost / home”,SCRIPT_URL
应该等于'/ home'。您可以在PHP脚本中对此进行检查,并从那里进行适当的重定向。