Apache mod_rewrite没有发生在localhost上

时间:2015-11-20 01:15:39

标签: apache .htaccess mod-rewrite url-rewriting

我似乎无法理解这一点。我刚刚从我的服务器上下载了我的网站文件,以便离线处理它们。但是,我的重写条件不再按预期工作。

我在过去3个小时内一直在谷歌,并继续采用这些解决方案:

  1. 将垃圾放入.htaccess文件中以确保其被读取。我这样做了,并且得到了500错误。

  2. 确保启用了mod_rewrite,并确保它已在php_info()中列出。那不是问题。

  3. 除此之外,我无法解决这个问题。

    这是我的.htaccess。我想要做的就是从我的网址中删除index.php:

    # Rewrite url no index.php
    RewriteEngine On
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteRule . index.php
    

    此处是我的虚拟主机配置:

    <VirtualHost *:80>
    ServerAdmin xxxx@gmail.com
    DocumentRoot "c:/wamp/www/myapp/public_html/"
    <Directory "c:/wamp/www/myapp/public_html/">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    ServerName myapp.local
    ErrorLog "logs/myapp.local"
    CustomLog "logs/myapp.local" common
    </VirtualHost>
    

    我还想知道重写规则在虚拟主机配置中似乎有点 。所以像这样:

    <VirtualHost *:80>
    ServerAdmin xxx@gmail.com
    DocumentRoot "c:/wamp/www/myapp/public_html/"
    <Directory "c:/wamp/www/myapp/public_html/">
     # use mod_rewrite for pretty URL support
     RewriteEngine on
     # If a directory or a file exists, use the request directly
     RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
     RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
     # Otherwise forward the request to index.php
     RewriteRule . index.php
    
     # ...other settings...
    </Directory>
    ServerName myapp.local
    ErrorLog "logs/myapp.local"
    CustomLog "logs/myapp.local" common
    </VirtualHost>
    

    我遇到了其他问题,因为我已经嵌套了应用程序(其中一个位于/,另一个位于/ app2 /)。我似乎也有问题!-f条件被忽略,它会重写我的图像和CSS的URL。

    有没有人对如何解决这个问题有任何想法?提前谢谢!

1 个答案:

答案 0 :(得分:0)

您应该使用这样的代码从URL中删除index.php。

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /index\.php(.*)\ [NC]
RewriteRule ^ %1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L,QSA]

然后在你的html的 head 部分中添加此项以修复CSS问题。

<base href="http://myapp.local" />