2016-07-25 31 views
3

這是文件看起來什麼我的.htaccess這樣的:的.htaccess重定向到整齊URL

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L] 

#removes trailing slash if not a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ /$1 [R=301,L] 

#adds ".php" to a URL that isn't a directory or a file 
RewriteCond %{REQUEST_URI} !(\.[^./]+)$ 
RewriteCond %{REQUEST_fileNAME} !-d 
RewriteCond %{REQUEST_fileNAME} !-f 
RewriteRule (.*) $1.php [L] 

雖然它讓我訪問的網址不帶.php到底是爲了例如example.com/sign-up 它不會從example.com/sign-up.php重定向我example.com/sign-up

有,我可以添加到該文件要做到這一點的任何代碼?

任何有識之士將是非常有益的

回答

1

的意見,以便張貼這作爲一個答案,我不能回答這個問題:

RewriteEngine On 

# remove PHP from root level requests 
RewriteCond %{THE_REQUEST} \.php[\s?] [NC] 
RewriteRule ^([^/]+)\.php$ /$1 [R=302,NE,L,NC] 

# To internally redirect /foo to /foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^([^/]+)/?$ $1.php [L] 
2

試試這個:

RewriteEngine On 

# browser requests PHP 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php 
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301] 

# check to see if the request is for a PHP file: 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^/?(.*)$ /$1.php [L] 
+0

哇!這太棒了!謝謝! –

+0

還有我怎麼重定向來自:http://example.com/?slug=hey-there 到:http://example.com/hey-there 請幫@ ansuman,肖漢 –

+0

有什麼辦法通過它我可以將此重定向僅限於根級別,例如:example.com/sing.php應該重定向到example.com/sing 但這不應該發生在example.com/data/sync.php .. 任何想法@anubhava 感謝您的時間! –