2012-09-18 72 views
0

我需要更新.htaccess文件,請快速回顧:可以.htaccess完整性檢查?

RewriteEngine On 
# Redirects errors to 404 page 
ErrorDocument 404 /404.php 

# Redirect index.php to site root 
RewriteCond %{HTTP_HOST} ^mysite.com [NC] 
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,NC] 
RewriteRule ^index.php$ http://www.mysite.com/ [R=301,L] 

# Unless directory remove slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/$ http://www.mysite.com/$1 [R=301,L] 

# Remove .php 
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ 
RewriteRule ^(.+)\.php$ http://www.mysite.com/$1 [R=301,L] 

# Resolve .php file for extensionless php urls 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([^/.]+)$ $1.php [L] 

這是相當直截了當。

第一個是404重定向。
第二個將www.mysite.com/index.php重定向到www.mysite.com
第三個刪除斜槓。 第四個刪除.php擴展名。 第五個解決php。

有人可能會注意到這一點,請給我的代碼快速完整性檢查。

+0

誰投票關閉offtopic? – diEcho

+0

我不知道這是什麼意思?我是新來的:/ – D0nkey

+0

如果您發現它有用,請接受答案!投票結束的主題是因爲它可能不是堆棧溢出所接受的問題的風格(你不解決直接的問題) –

回答

1

當您重定向用戶時,以下可能會更有意義,他們將再次遍歷所有.htaccess文件。

你在這裏實際做的是如果其中任何一個是true你告訴瀏覽器去從不同的URL「[R=301]」再次加載網站。

# Redirect index.php to site root 
RewriteCond %{HTTP_HOST} ^mysite.com [NC] 
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301] 
RewriteRule ^index.php$ http://www.mysite.com/ [R=301,L] 

您的其他重定向是在一個合理的順序,如果不是目錄下降斜線,如果一個PHP下降.php爲再沒有斜線解決任何問題。

注意這將導致相當多的重定向。如果用戶訪問您的網站在特定的URL,例如mysite.com/cake.php/(不存在)

mysite.com/cake.php/ =>mysite.com/cake.php
mysite.com/cake.php =>mysite.com/cake
mysite.com/cake =>http://www.mysite.com/cake
http://www.mysite.com/cake解析爲http://www.mysite.com/cake.php - 不存在
404 =>http://www.mysite.com/404.php
http://www.mysite.com/404.php =>http://www.mysite.com/404

雖然總之它做你在找什麼!

+0

謝謝,我已經重新定位它。代碼的其餘部分是否正常?我已經經歷了無數頁面,並認爲它會做我想做的事情,我只希望有比我更多經驗的人快速瀏覽一下。謝謝:) – D0nkey

+0

對我來說看起來不錯(增加了一些信息來回答) –

+0

@Pez Cuckow爲什麼我們在'RewriteCond'和'ReWriteRule'中使用'[NC]'標誌? – diEcho