我有这样的url:
page.com/content.php?xname=p&yname=q&zid=1
我想用apache mod_rewrite将这个url重写成如下所示:
page.com/p/q/
请注意,重命名的url中不应该有“zid”参数。 我知道expression式作为GET传递到原始url。 有没有可能重新如上所述。 如果是的话,如何做到这一点?
这个对我来说工作的很好,并会重写/p/q/
到/content.php?xname=p&yname=q&zid=1
。
Options +FollowSymLinks -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([^/]+)/$ content.php?xname=$1&yname=$2&zid=1 [QSA,L]
该规则将被放置在网站根文件夹的.htaccess中。 如果放置在其他地方可能需要一些小的调整。
它不会重写,如果请求的URL是一个真实的文件或文件夹(我确定你不想重写图像或其他页面 – 我不得不添加这样的条件,因为我不知道你的网站结构是什么)。
RewriteRule ^content\.php\?xname=(p)&yname=(q)&zid=1$ /$1/$2 [R]
您可以尝试像[a-Z0-9 _-] +这样的表达式来匹配标识符,而不是使用p和q。
这里有一个在线测试工具: http : //civilolydnad.se/projects/rewriterule/
RewriteEngine On RewriteRule ^/[a-z0-9]+/[a-z0-9]+/$ content.php?xname=$1&yname=$2 [L]