2010-03-04 106 views
0

我有一個網站在一個文件夾中的域。htaccess mod_rewrite幫助

http://domain.com.au/website/page.php

我只能訪問.htaccess文件制定規則。 我想我的URL看起來像這樣..

http://domain.com.au/page

所以在本質上我要刪除的子文件夾的坐在和PHP推廣。

在我的PHP所有鏈接結構類似這樣雖然

<a href="/website/page.php">page link</a> 

這是JS和CSS一樣。他們全部來自'網站'文件夾。

將重寫意味着我必須改變我所有的鏈接?

優先級是從url中刪除文件夾,而不是php的擴展名。

回答

0

1)您可以將所有文件移動到根網站目錄並從那裏運行網站。 2)您必須手動修改每個鏈接以從一開始刪除網站目錄,然後使用.htaccess文件將頁面重定向回適當的頁面。如果你打算做這種方式,你還不如刪除PHP擴展...

RewriteEngine On 
Options +FollowSymLinks 

RewriteCond %{HTTP_HOST} ^domain.com.au$ [NC] 
RewriteRule ^(.*)/ website/$1.php [L] 

您可能需要修改website/$1.php部分包括在某些情況下,你的整個根目錄,但應該只要.htaccess文件位於根網站目錄中就可以工作。這會將任何頁面以'http://domain.com.au/page'重定向到'http://domain.com.au/website/page.php',同時在地址欄中保留相同的URL。

+0

爲什麼您正確檢查HTTP_HOST? 'RewriteCond%{HTTP_HOST}^domain.com.au $ [NC]' – 2010-03-04 07:37:01

+0

此外,爲什麼你和Raz都使用最後一個標誌。當你有一個重寫規則時,這是毫無意義的。 – anomareh 2010-03-04 07:42:24

+0

我忘了提及/網站 有子文件夾,所以這個規則不起作用。所以它需要與domain.com.au/website/page.php和domain.com.au/website/bla/page2.php 等 也不適用於js和css – lukemh 2010-03-04 07:52:54

0
<IfModule mod_rewrite.c> 
    RewriteEngine on 

     RewriteRule ^page\_one/(.*)/([0-9]{1,6})/?$ webroot/products/products/view/$2 [L] 

</IfModule> 

這htaccess的代碼www.domain.com/page_one/anything/numeral

所有TRAFIC重定向到頁面www.domain.com/webroot/products/products/view/same數字

爲你的榜樣,像

RewriteRule ^page?$ website/page.php$2 [L] 

注意到,這個工程的「頁」作爲一個字符串,如果你需要的其他功能,改變它

想了解更多信息,您可能需要查看此鏈接: http://www.javascriptkit.com/howto/htaccess.shtml