[英]new to mod_rewrite
我是使用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 /標題)
有沒有辦法使文件夾選項^(。*)/可選?
為了使文件夾選項成為可選,我將規則分為兩部分:
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 -此站點
其中$ 1將是:“一個/兩個/三個”,而$ 2:將是“四個”。
為避免這種情況,請使用[^ /]而不是“。”:
RewriteRule ^([^/]*)/([^/]*)/pid/([^/]*)/([^/]*)$ /$1/$2.php?np=$3 [NC]
RewriteRule ^([^/]*)/pid/([^/]*)/([^/]*)$ /$1.php?np=$2 [NC]
如果您不在乎可到達的文件夾深度,則以下規則應足夠,並且無論是否使用文件夾名都應匹配:
RewriteRule ^(.*)/pid/(.*)/(.*)$ /$1.php?np=$2 [NC]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.