2014-06-23 35 views
0

我正在嘗試更新我的.htaccess文件,以便更好地查看網址(沒有.php的文件擴展名)。該文件已經有一個重定向,因爲我有兩個域名。.htaccess文件添加自定義網址後無法工作

這裏是原代碼:

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^darrenmorton\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.darrenmorton\.com$ 
RewriteRule ^/?$ "http\:\/\/darrenmorton\.co\.uk\/" [R=301,L] 

,這裏是不工作

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} ^darrenmorton\.com$ [OR] 
RewriteCond %{HTTP_HOST} ^www\.darrenmorton\.com$ 
RewriteRule ^/?$ "http\:\/\/darrenmorton\.co\.uk\/" [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
Not 
RewriteCond %{REQUEST_FILENAME} \.php -f 
RewriteRule ^(.*)$ $1.php [L] 

RewriteRule ^contact-darren-morton.php$ contact-darren-morton.php [L] 

不知道是什麼問題,因爲我是新來的.htaccess文件我更新的代碼!

+0

你能不能給你提出請求和預期結果的例子嗎? –

+0

@Erik Mitchell我正試圖擺脫url字符串末尾的文件擴展名。所以,而不是www.website.com/page.php我會得到www.website.com/page – Margate

回答

2

您可以使用:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?darrenmorton\.com$ [NC] 
RewriteRule^http://darrenmorton.co.uk}%{REQUEST_URI} [R=301,L,NE] 

RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC] 
RewriteRule^/%1 [R=301,L,NE] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC] 
RewriteRule ^(.+?)/?$ $1.php [L] 
+0

非常感謝您花時間幫助我解決這個問題。我在我的網站上嘗試過,但收到相同的錯誤消息。我不知道爲什麼,因爲我確定你的代碼是完美的。我現在正在考慮在建立服務器時它可能會成爲一個問題?我會考慮一下,希望能夠在我向主機詢問設置後使用您的代碼。 – Margate

+0

我在代碼中做了一個小小的更新。現在試試,如果它不起作用,讓我知道更多的細節,如這個.htaccess的位置,你嘗試了什麼URL,你得到什麼錯誤, – anubhava

+0

它工作正常。非常感謝您的時間和幫助。 – Margate

1

您正在使用的語句重定向一切:後

RewriteRule ^/?$ "http\:\/\/darrenmorton\.co\.uk\/" [R=301,L] 

沒有什麼可以工作,因爲這是它是否匹配進行檢查的最後一個規則(它總是匹配)。由您定義的[L]

所以至少你需要改變規則的順序。如果您希望規則僅適用於您的.co.uk域名,您也有其他選擇。

+0

我只是希望它在.co.uk工作,因爲.com是隻是重定向到.co.uk因爲.com上沒有網站如果我將原始文件(起始文章中的示例)移動到.htaccess文件的底部,它應該可以工作嗎?我對.htaccess文件完全陌生。無論如何,我會放棄這一點,但不想破壞任何東西。 – Margate

+0

如果其他域的文件位於另一個文件夾中,則可以在其中添加一個.htaccess規則。 – colburton

+0

其實你剛纔讓我想到了。我應該能夠將.com域名重定向到.co.uk。然後,我可以從.htaccess文件中刪除重定向,並將網址字符串代碼放入。如果這樣做,我會回發,以幫助其他誰可能有同樣的問題... – Margate

相關問題