2016-01-10 38 views
0

當我應用重寫規則時,我遇到了.htaccess問題。下面我解釋一下我做的:在應用重寫規則時,Friendly URL部分起作用

在本地主機:

路徑:的/ dev /網站

所需友好的URL:www.site.com/l/p - >是語言和p是頁

源URL是:www.site.com/index.php?p=about & L = EN

在.htaccess:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ index.php?p=$2&l=$1 [L] 

的情況是重寫規則部分工作

1- www.site.com/en/about工作,但是當位於內部的例如的IMG文件夾的/ dev /網站/模板/荷蘭國際集團未能獲得該文件,因爲下面的結構要求:http://127.0.0.1/dev/Site/en/templates/img/


HTML(如:)

<h1 class='center'> 
    <a href='http://www.Site1.com/index.php?p=about&l=dev/Site1/es' > 
    <img src='**templates/img/logo.png**' width='204' height='40' alt='Site1 Logo' /></a> 
</h1> 

我發現,重寫規則應用在href的URL變化..

+0

這個.htaccess位於哪裏,'index.php'位於哪裏? – anubhava

+0

在測試開始時,我把該文件放在網站的根目錄下,然後我移動到本地主機的根目錄,但沒有工作 – m4g4bu

+0

網站的根目錄和本地主機的根目錄是否相同? – anubhava

回答

0

這可能是由於幾個原因,我發現了您的代碼段, 你的代碼目前看起來是這樣的:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ index.php?p=$2&l=$1 [L] 

但我相信你的代碼應該是:

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*)$ index.php?p=$2&l=$1 [L,QSA] 

我所做的改變是:

  • 改變+*(在+意味着一個或多個,而*意味着零個或更多,如果你正在尋找的IMG路徑,你不同時擁有從您的htaccess變量)
  • 添加在規則中QSA(這使得查詢字符串追加,所以basicly要添加的字符串的GET我相信嗎?)
  • CH anged的[^/].(點指任何字符應該做的正是你想要的)
  • 設置基地重寫規則,以根(/dev/Site

我希望,我已經幫你了,我應該建議你對htaccess做一些研究。


編輯1:

嘗試改變形象,包括像這樣:

<h1 class='center'> 
    <a href='http://www.Site1.com/index.php?p=about&l=dev/Site1/es' > 
    <img src='/templates/img/logo.png' width='204' height='40' alt='Site1 Logo' /></a> 
</h1> 

的變化:

  • template/img/logo.png改變了圖像的加載到/template/img/logo.png(你的包含路徑的方式(在路徑前沒有/)告訴服務器它必須從url加載,使用您告訴的從反斜槓開始的反斜槓)。
+0

相同的結果...例如,我發現當我輸入http://127.0.0.1/dev/Site1/en/about ...如果我檢查網站中圖像的來源... url是http ://127.0.0.1/dev/Site1/en/img/brand.jpg so ...問題出在我需要修改的htaccess文件或網站的內部結構中? – m4g4bu

+0

你可以編輯你的問題,並添加HTML,所以我可以看到你如何嘗試包括圖像? –

+0

我在 – m4g4bu