2015-09-04 126 views
1

我想製作一個基本上是通配符設置的.htaccess文件。我有一個文件夾結構如下。.htaccess和子目錄

public_html/sites is the root directory and in this folder there are two sub directories: 

public_html/sites/brand (there are many brand folders, just used brand as example) 
public_html/sites/brand/event (there are many events in a brand folder, just used event as example) 

I have files in each event folder such as index.php and media.php 

我一直在重寫媒體頁面的URL結構我正在尋找未果。以下是我當前的.htaccess文件。

RewriteEngine On 
RewriteRule ^media/([^/]*)$ /media.php?unqid=$1 [L] 

所以我期望的預期URL是/ testbrand/4177/media/123456。我將在每個品牌下都有品牌和幾個活動,所以如果可能的話,我需要某種通配符。任何幫助表示讚賞。提前致謝。

+0

我有幾個品牌的文件夾我只是表明一個爲例。每次在我們的系統中添加新品牌時,該目錄都會隨時創建。在網站文件夾中,我目前擁有30多個品牌,並且它們都共享相同的文件夾結構。由於它們是在運行中創建的,所以我需要某種類型的通配符,因爲它們是系統地創建的。 – NUGGET

+0

好了,基本上我想將media.php?unqmid = 123456中的事件文件夾重寫爲/ media/123456。所以基本上media.php?media.php?unqmid = 123456變成testbrand/4177/media/123456,但是我需要這個.htaccess重寫來適用於所有品牌和事件,不僅僅是testbrand和eventid 4177. – NUGGET

+0

4177是eventid testbrand是testbrand的一個子目錄),testbrand是網站的子目錄 – NUGGET

回答

0

你可以在你的根的.htaccess使用這樣的規則:

RewriteEngine On 

RewriteRule ^([^/]+/[^/]+)/media/(\d+)/?$ $1/media.php?unqid=$2 [L,NC,QSA] 

這將加載/testbrand/4177/media.php?unqid=123456當你請求/testbrand/4177/media/123456

+0

感謝您的幫助,它的作用大部分是,但$ _SERVER ['QUERY_STRING']作爲unqmid = testbrand/4177傳遞的unqid,任何幫助表示讚賞。謝謝。 – NUGGET

+0

啊我的錯誤應該是'$ 2'的目標。現在試試我的更新規則。 – anubhava

+1

謝謝你的工作就像我想要的一樣。 – NUGGET

2

如果你想有一個像這樣

http://example.com/testbrand/4177/media/123456 

一個URL,你的品牌是動態的,那麼你重寫應該可能是這個樣子。

RewriteRule ^(?:[^/]+)/(?:[0-9]+)/media/([0-9]+)/?$ /media.php?unqid=$1 [L] 

根據您當前的內部URL,您只需要發送/media/到PHP後到來的ID號。如果你有更多的信息需要發送,那麼你需要更新你的內部URI參數。