很抱歉,如果这个问题已被问到一个问题,我找不到基于之前在本网站和Google上提出的问题的解决方案。
我有这个网址http://mywebsite.com/index.php?action=users&user=John
来为用户生成个人资料。我想清理此网址,以便我只需输入http://mywebsite.com/users/John
或任何操作即可。现在,为了采取具体行动,我可以简单地使用:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
RewriteRule ^([a-zA-Z0-9\-]+)$ index.php?action=$1 [L]
然后访问http://mywebsite.com/users
访问用户页面,但访问我&users=John
的特定用户。我以为我可以简单地使用:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?action=$1&$2=$3
使我的网址如此http://mywebsite.com/action/extra_action
。混乱?如果没有清理网址,我会http://mywebsite.com/index.php?action=ACTION&OTHER=
。某些操作不需要&other=
,如果您添加其中,则会导致不同的页面。例如,/index.php?action=users
会指向生成列表的页面; index.php?action=users&user=John
导致John的动态个人资料。我想制作网址http://mywebsite.com/users
,或者他们是否想要访问个人资料/users/John
。谢谢你的阅读!
答案 0 :(得分:0)
您需要将/
和最后两个参数设为可选,否则重定向将无效,除非它们有两个/
。
RewriteRule ^([a-zA-Z0-9]+)(/?)([a-zA-Z0-9]+)?(/?)([a-zA-Z0-9]+)?$ index.php?action=$1&$3=$5