mod_rewrite :如果/否则输入 RewriteRule

2024-05-17

以下重写将以数字 4 开头的字符串作为变量传递给 process.php :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(4[^/]*)$ /process.php?variable=$1 [L]

So this

http://www.domain.com/4shopping

被映射到

http://www.domain.com/process.php?variable=4shopping

但我想扩展最后一个重写规则,基本上是这样的:

if word begins with 4, map to /process.php?variable=$1
else map to /index.php

该声明的第二(其他)部分是基本的 WordPress 重写规则。例如:

http://www.domain.com/shopping

没有 4 的将被定向到

http://www.domain.com/index.php?shopping (I believe this is how WordPress permalinks work!)

尝试这个:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^(4[^/]*)$ process.php?variable=$1 [L]
RewriteRule ^([^4/][^/]*)$ index.php?$1 [L]

第一个规则将捕获任何可以映射到现有文件或目录的请求,并将结束重写过程。第二条规则是你的(没有RewriteCond状况)。第三条规则将捕获 URL 路径不以数字开头的任何请求4.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mod_rewrite :如果/否则输入 RewriteRule 的相关文章

随机推荐