Mod_rewrite和URL重定向 - APACHE,Mod_rewrite,PHP,Codeigniter

时间:2012-11-23 23:48:46

标签: php apache .htaccess codeigniter mod-rewrite

我有一个非常具体的问题。我正在使用wamp服务器在本地运行我的codeigniter项目。我已经加载了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/

当我再次点击mysite时,它会显示如下的URL:

http://mysite.local/mysite/mysite

在此之后,我的链接不会将我带到网页。并坚持到这里。 为什么我从服务器获取此行为? CODEIGNITER或htaccess文件是否有问题阻止了这个?我需要采取哪些步骤才能让每个N工作正常,包括javascript,css,images。

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

[增订]: 当我尝试WID新的codeigniter project.FIRST时,我将除htaccess文件之外的所有文件复制到项目文件夹中。幸运的是,我能够导航到索引页面,但它没有显示任何css,图像,脚本。 我的htaccess只包含这些位:RewriteEngine on。

我现在要做什么才能使我的js,图像按上述方式工作?Apache_error日志如下所示:。另外,当我尝试移动到下一页时,它会说“(错误:404)请求的URL /代码/ wham.local / categories / listings /找不到产品“。诚然建议.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/

3 个答案:

答案 0 :(得分:2)

检查C:\ wamp \ bin \ apache \ Apache2.2.17 \ conf中的http.conf文件 如果他们是这样的条目         #Virtual hosts         #Include 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文件中 并重启你的服务器。 这是虚拟主机概念。

答案 1 :(得分:0)

看起来这条线正在弄乱你:

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)

答案 2 :(得分:0)

你需要为apache启用重写模块..你可以通过去做 wamp tray icon&gt; apache&gt; apache module然后选择rewrite module