0

目前我有以下 .htaccess 文件

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ public/index.php/$1 [L]
</IfModule>

哪个工作得非常完美。

它将诸如http://domain.com/something/之类的URL重新写入 public/index.php 文件,就像一个魅力,除非它是一个文件,就像它应该的那样。

但是http://domain.com(没有附加任何路径)(根目录中没有 index.php,所以它现在给出 404)没有被重写,我怎样才能改变这个 .htaccess 所以它重写这个网址也是?

索引文件位于 public/index.php 我希望它通过使用 .htaccess 加载该文件

谢谢

4

3 回答 3

1

我相信要重写根目录,您可以简单地按照以下方式进行操作:

RewriteRule ^$ location/of/root/file [L]
于 2012-09-22T20:25:22.673 回答
1

你可以试试:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ public/index.php

RewriteBase 应该在规则模式前面加上一个斜杠,强制它匹配根路径。

未经测试!

于 2012-09-22T21:02:28.453 回答
0

你那里的东西是受WordPress启发的?这是一个坏主意,因为它告诉 Apache 在重定向之前始终检查路径是文件还是目录。

我有这样的东西

RewriteEngine On
RewriteCond %{REQUEST_URI} !^.*/(css|images|javascript)(.*) [NC]
RewriteCond %{REQUEST_URI} !\.(swf|ico|php|xml)$ [NC]
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule (.*) index.php?page=$1&%{QUERY_STRING} [PT]

第一个条件限制此重定向在特定文件夹中工作。秒为特定的扩展。你可以猜到第三个做了什么:)

于 2012-09-22T20:16:49.270 回答