我有这样的网址:
page.com/content.php?xname=p&yname=q&zid=1
我想用apache mod_rewrite将这个url重写为:
page.com/p/q/
请注意,重命名的网址中不应该有'zid'参数 . 我知道表达式作为GET传递到原始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]
这个适合我,并将 /p/q/ 的请求重写为 /content.php?xname=p&yname=q&zid=1 .
/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是真实文件或文件夹,它将不会重写(我确定你不想重写图像或其他一些页面 - 我不得不添加这样的条件,因为我不知道你的网站结构是什么) .
3 回答
您可以尝试像[a-Z0-9_-]这样的表达式来匹配标识符,而不是p和q .
这里有一个在线测试工具:http://civilolydnad.se/projects/rewriterule/
这个适合我,并将
/p/q/
的请求重写为/content.php?xname=p&yname=q&zid=1
.此规则将放在网站根文件夹中的.htaccess中 . 如果放在其他地方,可能需要进行一些小的调整 .
如果请求的URL是真实文件或文件夹,它将不会重写(我确定你不想重写图像或其他一些页面 - 我不得不添加这样的条件,因为我不知道你的网站结构是什么) .