我想使用mod_rewrite和Wampserver从地址栏中删除“/index.php/”。 Codeigniter Framework建议使用此代码:
RewriteEngine on
#RewriteBase /
RewriteCond $1 !^(index\.php|img|table-images|robots\.txt|css|fonts|js|uploads|dbg-wizard\.php)
RewriteRule ^(.*)$ index.php/$1 [L]
这应该改变这个网址:
mysite.local/contact_us
到此:
mysite.local/index.php/contact_us
这适用于XAMPP,但使用Wampserver第一个URL会生成错误404! 我用Apache启用了mod_rewrite,错误日志中没有错误。
更新
我在.htacess中添加了.blabla但没有任何反应!这意味着Apache不读取.htaccess!为什么呢?
我将AllowOverride All添加到httpd-vhosts.conf。 Apache没有执行.htaccess,在httpd.conf中启用AllowOverride是不够的。
这是我的httpd-vhosts.conf文件:
<Directory E:\mysite\www>
Options Indexes FollowSymLinks Includes ExecCGI
#Order Deny,Allow
#Allow from all
AllowOverride All
Require all granted
</Directory>
答案 0 :(得分:0)
要检查模式重写是否正常,请尝试以下步骤:
创建 .htaccess 文件,并将这些代码放入其中并保存。
options +FollowSymLinks RewriteEngine On
RewriteBase /htaccess_test/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/?$ user.php?u=$1
再创建一个名为 user.php 的文件并将这些代码放入 这个并保存。
<?php
if(isset($_GET['u'])){
echo $_GET['u'];
}
现在转到浏览器类型{{3}}。
如果这样做,问题不在你的apache设置中。
确保您正在编辑正确的 .htaccess 文件。您需要编辑的 .htaccess 文件位于项目的根文件夹中,而不是应用程序或任何其他文件夹中。并把这些代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /root_directory_of_your_project/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>