[英]conditional htaccess?
假设我有以下可用的 GET 变量:
state
城市
卧室
浴室
类型
价格
现在我希望他们像这样出来:
mysite.com/state/city/#-bedrooms/#-bathrooms/type/price
但是,我希望它能够工作,以便如果这些变量之一不存在,它仍然可以工作
IE:
mysite.com/state/city/#-bedrooms
或者:
mysite.com/state/#-bedrooms/price
我该怎么做呢?
您可以使用?
量词。
# state city bedrooms bathrooms
RewriteRule ^(\w+)(?:/(\w+))?(?:/(\d+)-bedrooms)?(?:/(\d+)-bathrooms)?$
script.php?state=$1&city=$2&bedrooms=$3&bathrooms=$4
# add further (?:(\d+)-placeholders)? for the other optional parts
但是,如果子模式不匹配,这将重写为空变量。
所以也许你应该定义一个具有不同特异性的 RewriteRules列表:
RewriteRule ^(\w+)/(\d+)-bedrooms$ scr?state=$1&bed=$2
RewriteRule ^(\w+)/(\w+)/(\d+)-bedrooms$ scr?state=$1&city=$2&bed=$3
...
在您的代码中正确执行此操作要容易得多:
#.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ /index.php [QSA,L]
您可以使用任何您想要处理请求 URI 的逻辑:
#index.php
<?php
$request = explode('/', ltrim($_SERVER['REQUEST_URI'], '/'));
$state = array_shift($request);
$city = array_shift($request);
// and so on
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.