我刚开始使用mod_rewrite,需要一些帮助,这就是我到目前为止所取得的成果
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/pid/(.*)/(.*)$ /$1/$2.php?np=$3 [NC]
RewriteRule ^news/article/(.*)$ /news/details.php?newstag=$1 [NC]这适用于以下链接:http://www.mydomain.co.uk/about/about/pid/2/About (文件夹/文件名/pid/页面id/页面标题
但不是用它,而且我也不能让它工作。
http://www.mydomain.co.uk/index/pid/1/Welcome-to-this-site (文件名/pid/页面id/标题)
有没有办法让文件夹选项^(.*)/可选?
发布于 2011-04-21 00:48:59
要使文件夹选项成为可选选项,我将规则一分为二:
RewriteRule ^(.*)/(.*)/pid/(.*)/(.*)$ /$1/$2.php?np=$3 [NC]
RewriteRule ^(.*)/pid/(.*)/(.*)$ /$1.php?np=$2 [NC]请注意,".“匹配所有内容,包括一个"/",出于这个原因,我想两个规则都会匹配一个URL,比如:http://www.mydomain.co.uk/one/two/three/four/pid/1/Welcome-to-this-site
其中$1是:“一/二/三”,$2:“四”。
要避免这种情况,请使用^/而不是".":
RewriteRule ^([^/]*)/([^/]*)/pid/([^/]*)/([^/]*)$ /$1/$2.php?np=$3 [NC]
RewriteRule ^([^/]*)/pid/([^/]*)/([^/]*)$ /$1.php?np=$2 [NC]如果您不关心可访问的文件夹深度,则以下规则应该足够,并且在有或没有文件夹名称时都匹配:
RewriteRule ^(.*)/pid/(.*)/(.*)$ /$1.php?np=$2 [NC]https://stackoverflow.com/questions/5732376
复制相似问题