0

我需要像这样的网址部分

www.example.com/education/tutorial/php.html

to

MainFolder=education

SubFolder=tutorial

PageName=php

www.example.com/jobs.html

to 

MainFolder=null

SubFolder=null

PageName=jobs

这两种情况如何处理。

我在 .htaccess 中使用了以下代码

RewriteRule ([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ Pages.php?Page=$3&SubFolder=$2&MainFolder=$1
RewriteRule ([a-zA-Z0-9-]+).html$ Pages.php?Page=$1

但它在这两种情况下都不起作用。仅适用于一个。

可能吗?

提前致谢

4

2 回答 2

1

请尝试以下方法。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ Pages.php?Page=$3&SubFolder=$2&MainFolder=$1 [NC,L]
RewriteRule ^([a-zA-Z0-9-]+).html$ Pages.php?Page=$1 [NC,L]
于 2013-11-08T04:41:07.097 回答
0

您需要在这两个规则上放置一个起始锚点。如我所见,您拥有的第二条规则将永远被抓住。

您的规则应如下所示:

RewriteRule ^([a-zA-Z0-9-]+).html$ Pages.php?PageName=$1 [NC,L]
RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+).html$ Pages.php?PageName=$3&SubFolder=$2&MainFolder=$1 [NC,L]

请注意我如何更改PagePageName,添加标志NC并将锚点L添加^到规则的开头。NC使匹配不区分大小写,并L为当前目录进行规则匹配。同样,^从 URL 的开头进行搜索,而不是任何地方(您当前拥有的)。

于 2013-11-08T04:40:20.620 回答