首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mod_rewrite新手入门

mod_rewrite新手入门
EN

Stack Overflow用户
提问于 2011-04-20 22:56:23
回答 1查看 79关注 0票数 0

我刚开始使用mod_rewrite,需要一些帮助,这就是我到目前为止所取得的成果

代码语言:javascript
复制
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/标题)

有没有办法让文件夹选项^(.*)/可选?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-21 00:48:59

要使文件夹选项成为可选选项,我将规则一分为二:

代码语言:javascript
复制
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:“四”。

要避免这种情况,请使用^/而不是".":

代码语言:javascript
复制
RewriteRule ^([^/]*)/([^/]*)/pid/([^/]*)/([^/]*)$ /$1/$2.php?np=$3 [NC]
RewriteRule ^([^/]*)/pid/([^/]*)/([^/]*)$ /$1.php?np=$2 [NC]

如果您不关心可访问的文件夹深度,则以下规则应该足够,并且在有或没有文件夹名称时都匹配:

代码语言:javascript
复制
RewriteRule ^(.*)/pid/(.*)/(.*)$ /$1.php?np=$2 [NC]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5732376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档