0
我在我的htaccess文件下面的代碼:虛榮URL和文件擴展名的腳本干擾在一起
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase/
#vanity URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-_]*)$ /profile.php?username=$1 [L,QSA]
RewriteCond %{THE_REQUEST} \ /profile\.php\?username=([^&\ ]+)&?([^\ ]*)
RewriteRule^/%1?%2 [L,R=301]
#remove file extensions
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
ErrorDocument 400 /404.php
ErrorDocument 401 /404.php
ErrorDocument 403 /404.php
ErrorDocument 404 /404.php
ErrorDocument 500 /404.php
<Files .htaccess>
order allow,deny
deny from all
</Files>
關於個性化網址,它工作正常,但是當涉及到去除在該PHP擴展 URL的結束,它不工作:
如果我進入mysite.com/home.php
,我得到重定向到home.php
但延長依然存在,在地址欄中。
2.如果我進入mysite.com/home
,我重定向到我的自定義錯誤頁,因爲home
不是一個用戶名是我的數據庫。
我該如何修復1.和2.?
+1這個很好的解釋!我要阻止用戶名,如關於,設置等...所以我不需要前綴。您的代碼似乎適用於網頁,但它不適用於我的表單操作文件:我的表單不再提交。如果home.php有一個窗體的動作文件「signup.php」,我會重定向到mysite.com/signup,然後什麼也不做。任何想法爲什麼? –
也許僅僅刪除某些指定URL的文件擴展名比較容易,例如:home.php和account.php。這可能通過htaccess嗎? –
@ChHr在第一條規則中,'(。*)'需要爲'(home | account)',第二個規則'([^ \。] +)'需要爲'(home | account) '。 –