URL重写规则不适用于localhost(apache)

时间:2015-01-02 10:34:24

标签: php apache .htaccess mod-rewrite

这是我的链接:http://localhost/test/index.php

现在我想将其更改为:http://localhost/home/

所以我创建一个.htaccess文件并将其放在 test 文件夹中。

这是我的.htaccess代码:

RewriteEngine on

RewriteRule ^test/index.php$ home/

mod_rewrite 也已启用。

但无论如何,此规则对我不起作用,浏览器会将我重定向到原始网址http://localhost/test/index.php。但是,我在网上尝试了这个规则,它似乎在那里工作。这是我测试规则的网站的快照。

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试以下路径:

  1. 在终端运行a2enmod rewrite并重新启动apache。

  2. Apache高达2.3

  3. 如果已完成,请执行以下操作,

    转到此目录,

    cd /etc/apache2/sites-available/

    sudo gedit default

    取代这一行:

    Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all 并按以下方式更改

    Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all 然后启动apache服务器

    sudo service apache2 restart

    Apache 2.4 +

    sudo gedit /etc/apache2/apache2.conf

    最后添加以下内容

    ```

    删除重启服务器时出现的错误

    ServerName localhost

    phpmyadmin 404错误已解决

    包括/etc/phpmyadmin/apache.conf ```

    同时为AllowOverride All目录

    设置/var/www

    然后按照以下步骤操作

    sudo adduser <username> www-data sudo chown -R www-data:www-data /var/www sudo chmod -R g+rw /var/www

    重新启动apache

    完成!!!

    检查/var/log/apache2/error.log是否还有问题

答案 1 :(得分:0)

您需要有2条免费规则:

RewriteEngine on
RewriteBase /

# external redirect for chancing URL
RewriteCond %{THE_REQUEST} \s/+test/index\.php[\s?] [NC]
RewriteRule ^ home/ [L,R=302]

# internal routing to actual URL
RewriteRule ^home/?$ test/index.php [L,NC]