【发布时间】:2011-03-15 14:52:42
【问题描述】:
是否可以强制重写 url?
这是一个有效的示例,http://localhost/home/ 转到 http://localhost/index.php?page=home,但 URL 对用户保持不变。
我无法开始工作是强制 http://localhost/index.php?page=home 显示为 http://localhost/home/.
我不知道我是否使用了正确的术语,但我希望这样,如果您键入未重写的 url,我希望重写的 url 出现在用户的浏览器中。
这是我到目前为止所做的工作:
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]
【问题讨论】:
-
您不能在不重新加载页面的情况下更改用户输入的 url。在这种情况下,我认为重写规则不会对您有所帮助。 (见stackoverflow.com/questions/824349/…)
-
我认为你理解错了:如果你仔细想想,你只是不希望用户直接访问
index.php,对吧?只需执行404并在404中显示一些真正有效的链接。 Nice 404 有类似“你的意思是http://localhost/home/”的消息吗? ...
标签: php apache mod-rewrite url-rewriting rewrite