htaccess重写规则无效

时间:2015-06-06 16:34:18

标签: php apache .htaccess mod-rewrite redirect

所有

我正在尝试通过htaccess重定向脚本重定向匹配。

以下是我的htaccess脚本。

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^post/(.*)/$ post.php?tag=$1 [L]
RewriteRule ^search/(.*)$ search.php?tag=$1 [L]

问题:索引和搜索页面正在重定向。帖子页面未被重定向。

请帮忙解决问题

2 个答案:

答案 0 :(得分:1)

在根目录中尝试此操作.htaccess:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^post/(.+)$ post.php?tag=$1 [L,NC,QSA]

RewriteRule ^search/(.+)$ search.php?tag=$1 [L,NC,QSA]

答案 1 :(得分:0)

开箱即用的Apache并不允许使用htaccess文件。如果您尚未编辑/etc/apache2/sites-available/default文件,则需要执行此操作。寻找这段代码:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
            # Uncomment this directive is you want to see apache2's
            # default start page (in /apache2-default) when you go to /
            #RedirectMatch ^/$ /apache2-default/
    </Directory>

AllowOverride None更改为AllowOverride All。在您更改后,您需要重新启动Apache才能进行更改(service apache2 restart)。

<强>买者

您希望通过htaccess文件执行的大多数操作都可以通过Apache配置文件更安全地完成(因此默认情况下会忽略htaccess文件)。有关详细信息,请参阅this post