我有一个问题。我花了最近2个小时在论坛上搜索,我还没有找到答案为什么我的htaccess配置无法正常工作。
这是我的.htaccess:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.myserver.com/$1 [R]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^block/([a-zA-Z0-9]+)/$ block.php?id=$1 [L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^tx/([a-zA-Z0-9]+)/$ tx.php?id=$1 [L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^address/([a-zA-Z0-9]+)/$ address.php?id=$1 [L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^block/([a-zA-Z0-9]+)$ block.php?id=$1 [L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^tx/([a-zA-Z0-9]+)$ tx.php?id=$1 [L]
RewriteCond %{SERVER_PORT} 443
RewriteRule ^address/([a-zA-Z0-9]+)$ address.php?id=$1 [L]
RewriteEngine工作正常,我可以在启动http:... myserver.com时确认它被重定向到https:... myserver.com。
然而,我的SEO友好URL只是不起作用。 启动https://myserver.com/block/12345时,我只在error.log中收到错误消息:
[Tue Jan 07 22:08:07 2014] [error] [client 77.186.33.111] File does not exist: /var/www/block
显然它没有改写任何东西。
我会感激任何帮助,我必须做一些非常错误的事情,但为了上帝的缘故,我无法弄清楚自己。
由于
答案 0 :(得分:0)
你得到404,因为RewriteRule
需要一个尾部斜杠,但你的URI没有。
用此替换您的代码,然后重试:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.myserver.com/$1 [R,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?id=$2 [L,QSA]