.htaccess SEO友好的URL不起作用

时间:2014-01-07 21:24:11

标签: php apache .htaccess mod-rewrite apache2

我有一个问题。我花了最近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

显然它没有改写任何东西。

我会感激任何帮助,我必须做一些非常错误的事情,但为了上帝的缘故,我无法弄清楚自己。

由于

1 个答案:

答案 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]