我的.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
我的完整网址为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
是否可能需要在服务器上设置一些其他配置?
答案 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]
希望它对你有用..:)