2017-04-14 59 views
0

我使用.htaccess創建乾淨的網址。 這裏是一片.htaccess文件的:乾淨的URL與.htaccess但只有一個網址

Options +FollowSymLinks -MultiViews 
RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

RewriteRule ^posts/page/([0-9]+)/$ posts.php?page=$1 
RewriteRule ^posts posts.php 

它工作正常,但問題是這兩個URL工作! 有沒有辦法只做site.com/posts/工作,並在site.com/posts.php上返回'not found'(或重定向到site.com/posts/)

想想我讀了兩處地址對於相同的頁面對於seo不利。

回答

0

您可以創建在每一個「.PHP」 URL返回404 HTTP代碼重寫規則:

RewriteRule .*\.php$ - [R=404] 
+0

now/posts/returns 404 too。無論如何,只有使/posts.php返回404? – theboy

0

這是對我工作的罰款。希望它對你也能很好地工作。

RewriteEngine On 
Options -Multiviews 

#For rewriting request to posts.php 
RewriteCond %{REQUEST_URI} ^/posts/?$ 
RewriteRule .* /posts.php [L,END] 

#For returning 404 on directly accessing /posts.php 
RewriteCond %{REQUEST_URI} ^/posts.php$ 
RewriteRule .* - [R=404,L] 
0

重定向/posts.php/職位如果你想在一部開拓創新的請求重定向到404,重寫規則行改變這個

你可以使用這個

RewriteEngine on 

RewriteCond %{THE_REQUEST} /posts\.php [NC] 
RewriteRule^/posts [NE,L,R] 
#Your other rules 

RewriteRule^- [R=404,L] 
+0

我用它是這樣的:RewriteCond%{THE_REQUEST} /*\.php [NC] RewriteRule^- [R = 404,L]它返回404,但它不顯示我的404.php文件,它返回這個錯誤:此外,嘗試使用ErrorDocument處理請求時遇到500內部服務器錯誤錯誤。 – theboy