我似乎无法理解这一点。我刚刚从我的服务器上下载了我的网站文件,以便离线处理它们。但是,我的重写条件不再按预期工作。
我在过去3个小时内一直在谷歌,并继续采用这些解决方案:
将垃圾放入.htaccess文件中以确保其被读取。我这样做了,并且得到了500错误。
确保启用了mod_rewrite,并确保它已在php_info()中列出。那不是问题。
除此之外,我无法解决这个问题。
这是我的.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。
有没有人对如何解决这个问题有任何想法?提前谢谢!
答案 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" />