htaccess RewriteRule无法正常工作

时间:2016-06-26 16:54:30

标签: php apache .htaccess mod-rewrite

我的.htaccess文件中包含此代码:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?link=$1 [L]
</IfModule>

虽然我可以使用非常漂亮的网址(例如index.php?link=somepage

来访问它,但我得到的是404

我的完整网址为http://www.website.com/subfolder/index.php?link=somepage

我在Ubuntu 16上安装了Apache 2.4.18并加载了mod_rewrite模块。

更新

当我尝试这个时:

RewriteRule ^ index.php [L]

然后我可以使用http://www.website.com/subfolder/?link=somepage来访问它 所以这种方式只需删除index.php

即可

是否可能需要在服务器上设置一些其他配置?

4 个答案:

答案 0 :(得分:1)

这是一个服务器问题,包括mime类型和多视图。

对于stackoverflow来说,这不是真正的问题,但是如果有人遇到同样的问题,那么解决这个问题的来源是:

答案 1 :(得分:0)

尝试:

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /subfolder/index.php?link=$1 [L]

答案 2 :(得分:0)

试试这个:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ ./index.php?link=$1

答案 3 :(得分:0)

首先,您应该检查您的apache配置

sudo vi /etc/apache2/apache2.conf

搜索

<Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
</Directory>

AllowOverride无更改为 AllowOverride All

通过运行cmd

启用htaccess模块
sudo a2enmod rewrite

然后重启服务器

sudo service apache2 restart

并在项目文件夹中使用此.htaccess文件

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?/$1 [L]

希望它对你有用..:)