簡體   English   中英

mod_rewrite的新功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM