[英]Apache mod_rewrite is not working
我正在嘗試將請求重定向到http://www.site.com/customer到https://www.site.com/customer並隱藏.php擴展名,但它無效。 這些是我的配置文件:
httpd.conf中:
LoadModule rewrite_module modules/mod_rewrite.so
mysite.conf:
<Directory /var/www/site/customer>
Order Deny,Allow
Allow from all
</Directory>
Alias /customer /var/www/site/customer
/ var / www / site / customer中的.htaccess:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}
#unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R=301,L]
#redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.*)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.*)\.php$ $1 [R=301,L]
#resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
我錯過了什么嗎?
你錯過了什么;)
以下是一些修改:
所以在這里,這可能有所幫助,但也許不會100%工作(但它仍然比它更好):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://$1 [QSA,NC,L]
#unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [QSA,R=301,L]
#redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.*)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.*)\.php$ $1 [QSA,R=301,L]
#resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]
如果您不在托管環境中(=如果它是您自己的服務器並且您可以修改虛擬主機,而不僅僅是.htaccess
文件),請嘗試使用RewriteLog
指令:它可以幫助您跟蹤此類問題:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
我最喜歡檢查regexp的工具:
http://www.quanetic.com/Regex (別忘了選擇ereg(POSIX)而不是preg(PCRE)!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.