以下重写将以数字4开头的字符串作为变量传递给process.php:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(4[^/]*)$ /process.php?variable=$1 [L]
所以这个
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
此语句的第二个(else)部分是基本的WordPress重写规则。例如:
http://www.domain.com/shopping
没有4的将被引导至
http://www.domain.com/index.php?shopping (I believe this is how WordPress permalinks work!)
答案 0 :(得分:3)
试试这个:
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
开头的请求。
答案 1 :(得分:3)
以下是解决方案:
RewriteRule ^(4[^/]*)$ /feedback.php?sms_code=$1 [L]
#
# BEGIN wordpress
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END wordpress
我保留了默认的Wordpress规则,并在上面添加了我自己的条件规则,确保在满足条件时终止[L]处理
答案 2 :(得分:0)
我会在你已经拥有的东西的末尾添加两行。附加规则将转换为index.php尚未转换为process.php的任何内容。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(4[^/]*)$ /process.php?variable=$1 [L]
RewriteCond %{SCRIPT_FILENAME} !process\.php
RewriteRule ^([^/]*)$ index.php?$1