Mod_rewrite和URL重定向-APACHE、Mod_rerite、PHP、Codeigner



我遇到了一个非常具体的问题。我正在使用wamp服务器在本地运行我的代码点火器项目。我已经在中加载了mod_rewrite,它显示在我的phpinfo中。

在我的wamp根目录中,我有一个codeigniter项目文件夹"mysite"。这是mysite的目录结构。

-mysite
|--images
|--eshots
|--useruploads
|--temp
|--SpryAssets
|--css
|--js
|--timthumb

在启用这个mod_rewrite之后,我修改了windows目录中的"主机"文件,并在虚拟主机文件中添加了这行代码,以便像这样访问我的网站。(mysite.local)

127.0.0.1 mysite.local

之后,我在根目录(即mysite文件夹下)中创建了一个htaccess文件

htaccess file:
RewriteEngine on
RewriteCond $1  !^(index.php|images|lists|eshots|useruploads|temp|SpryAssets|css|js|robots.txt|timthumb.php)
RewriteRule ^(.*)$ /index.php?$1 [L]
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>

在这之后,当我试图从wamp访问我的网站时,它会把我带到任何地方。例如,如果我从localhost的项目文件夹(即mysite)单击,它会将我带回到localhost文件夹,并且我的URL如下所示:

http://mysite.local/mysite/

当我再次点击我的网站时,它会显示这样的URL:

http://mysite.local/mysite/mysite

在这之后,我的链接就不会带我去网页了。并被困在这里。为什么我从服务器得到这种行为?停止此操作的CODEIGNITER或htaccess文件是否存在任何问题?我需要做什么步骤才能让每个N都正常工作,包括javascript、css和图像。

如何处理这个具有挑战性的问题
大多数人说你需要启用mod_rewrite或阅读Apache提供的手册。

[更新]:当我尝试WID新的代码点火器项目时。首先,我将除htaccess文件外的所有文件复制到项目文件夹中。幸运的是,我能够导航到索引页面,但它没有显示任何css、图像和脚本。我的htaccess只包含以下几位:RewriteEngine on。

我现在该怎么做才能让我的js,图像像上面一样工作?Apache_error日志如下所示:。此外,当我尝试移动到下一页时,它会显示"(错误:404)找不到请求的URL/Code/wham.local/categories/listings/Products"。请建议。其中wham.local是虚拟主机。

apache_error日志:

[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/css, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/css, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/js, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/js, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/js, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/js, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/js, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images, referer: http://localhost/Code/
[Sun Nov 25 13:00:54 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images
[Sun Nov 25 13:01:03 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images
[Sun Nov 25 13:01:55 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/images
[Sun Nov 25 13:01:56 2012] [error] [client 127.0.0.1] File does not exist: D:/wamp/www/Code/wham.local, referer: http://localhost/Code/

检查C:\wamp\bin\apache\Apache2.2.17\conf中的http.conf文件如果他们是这样的条目#虚拟主机#包括conf/extra/httpd-vhosts.conf然后打开文件httpd-vhosts.conf,在其中添加以下行。

<VirtualHost *:80>
DocumentRoot  "C:/wamp/www/mysite/"
ServerName     mysite.local
</VirtualHost>
<VirtualHost *:80>
DocumentRoot  "C:/wamp/www/"
ServerName     localhost
</VirtualHost>

否则,您也可以将此行添加到httpd.conf文件中并重新启动服务器。这就是虚拟主机的概念。

这一行似乎在搅乱你:

RewriteCond $1  !^(index.php|images|lists|eshots|useruploads|temp|SpryAssets|css|js|robots.txt|timthumb.php)

试试这个

RewriteCond %{REQUEST_URI}  !^(index.php|images|lists|eshots|useruploads|temp|SpryAssets|css|js|robots.txt|timthumb.php)

您需要为apache启用重写模块。。你可以去wamp tray icon>apache>apache module,然后选择rewrite module

最新更新