2012-02-15 65 views
0

額外的單詞添加到URL我有一個網址,像這樣的應用程序:我如何使用mod_rewrite

https://www.domain.com/example/public/subscription 
https://www.domain.com/example/public/subscription/source 
https://www.domain.com/example/public/test/subscription 

我想使用mod_rewrite(或其他方法)來創建更短的「別名「通過去除/public/部分上述的URL,這樣我可以提供我的客戶與這些較短的版本的網址:

https://www.domain.com/example/subscription 
https://www.domain.com/example/subscription/source 
https://www.domain.com/example/test/subscription 

換句話說,瀏覽到https://www.domain.com/example/subscription時,例如:

  • 打開時https://www.domain.com/example/public/subscription直接
  • 瀏覽器必須仍然顯示在地址欄的短版的URL(不/public/

是服務器必須發回相同的響應是一個將得到這甚至可能,以及這樣一個RewriteRule將如何?

預先感謝您。

回答

2

把這是.htaccess文件在您的DocumentRoot

Options +FollowSymLinks -Indexes -MultiViews 
RewriteEngine on 
RewriteBase/

RewriteRule ^(example)/(.*)$ $1/public/$2 [NC,L] 
+0

我想我失去了一些東西人在這裏。該網站的DocumentRoot是/ var/www/domain/example,我的.htaccess文件位於示例/目錄中。現在,我甚至無法得到像下面這樣簡單的規則:'RewriteRule^/(。*)http://www.google.com [R]'。這應該將「https:// www.domain.com/example/public/test/subscription」的請求重定向到Google,對嗎?相反,我得到了404。 – Xhantar 2012-02-15 10:38:51

+0

@Xhantar如果你的'DocumentRoot'是'/ var/www/domain/example',你的URL應該是這樣的:'https://www.domain.com/public/test/訂閱「不是'https:// www.domain.com/example/public/test/subscription'。例如/ public/test/subscription你的'httpd'服務器正在嘗試訪問 '/ var/www/domain/example // http:// www.domain.com/example/public/subscription'。 – ThinkingMonkey 2012-02-15 11:06:46

+0

@ThinkinMonkey - 好,我現在看到我的錯誤。我在正確的軌道上使用了實際的RewriteRule,但是我的DocumentRoot被設置爲的路徑,所導致的基本URL以及我的.htaccess文件的物理位置都是我不太瞭解的因素。現在解決並工作;非常感謝你! – Xhantar 2012-02-15 12:09:01

-1

您只是想「刪除」public關鍵字?

試試這個重寫規則:

RewriteRule ^/example/public/(.*) /example/$1 [L] 
+0

反過來,實際上(除非我迷惑自己)。我想爲我的客戶端提供較短的URL,然後希望mod_rewrite添加/ public/part,因爲當調用不帶/ public /的URL時,應用程序將響應404 Not Found錯誤(假設沒有重寫規則存在)。 – Xhantar 2012-02-15 10:36:21