2015-10-04 39 views
1

我使用RewriteRule來創建SEO友好的網址。創建規則後,在錯誤的目錄中查找外部文件。.htaccess重寫加載錯誤目錄中的文件

.htaccess文件代碼:

# 1 -- Error 404 -- 
ErrorDocument 404 /NotFound.php 

#2 -- IGNORE INDEX -- 
IndexIgnore * 
#3 -- Default charter set -- 
AddDefaultCharset UTF-8 

RewriteEngine On  
RewriteRule ^questions/([0-9]+) questions.php?id=$1 [NC,L] 

通常從css/filename.css加載CSS。 應用重寫規則後,從​​

加載文件如何創建一個RewriteRule它只是改變URL行爲,以及如何強制questions.php?id=34&title=somethingquestions/34/something自動?

+3

使用在'questions.php'了''元素。 – hjpotter92

回答

2

對於css問題,只需在你的css,js,images文件中使用絕對路徑而不是相對路徑。這意味着您必須確保這些文件的路徑始於http://或斜槓/

否則您可以添加此僅低於<head>您網頁的HTML部分:<base href="/" />讓每一位相對URL是從基本URL解決,而不是從當前頁面的URL。

對於第二個問題,您需要重定向規則將舊URL重定向到漂亮鏈接。

有這樣說:

# 1 -- Error 404 -- 
ErrorDocument 404 /NotFound.php 

#2 -- IGNORE INDEX -- 
IndexIgnore * 
#3 -- Default charter set -- 
AddDefaultCharset UTF-8 
Options -MultiViews 
RewriteEngine On 

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} /questions\.php\?id=([^\s&]+)&title=([^\s&]+)\s [NC] 
RewriteRule^/questions/%1/%2? [R=302,L,NE] 

RewriteCond %{THE_REQUEST} /questions\.php\?id=([^\s&]+)\s [NC] 
RewriteRule^/questions/%1? [R=302,L,NE] 

# internal forward from pretty URL to actual one 
RewriteRule ^questions/([0-9]+)/?$ questions.php?id=$1 [NC,L,QSA] 

RewriteRule ^questions/([0-9]+)/([\w-]+)/? questions.php?id=$1&title=$2 [NC,L,QSA]