使用 mod_rewrite 重写基本 URL

使用 mod_rewrite 重写基本 URL

我的域名 example.com 指向目录 public_html。目录中有 public_html/php 是我的 index.php 文件。

现在我想要 URL示例.com指着公共html/php/index.php。我必须使用 mod_rewrite 来执行此操作,因为我无权访问 httpd.conf 来使用 Alias 或 DocumentBase 执行某些操作。

在目录 public_html 中是我的 .htacces 文件,其内容如下:

RewriteEngine on
RewriteCond %{HTTP_HOST} exaple.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /php/index.php [L,QSA]

这完成了一半的工作,因为当我输入类似example.com/s在我的浏览器中它指向公共html/php/index.php就像我希望的那样。但是当我输入示例.com它指向公共的html

我该如何修复此问题?

答案1

RewriteCond %{REQUEST_FILENAME} !-f

!-f标志表示“如果请求的文件不存在”。访问 example.com 时,ApacheDirectoryIndex指令将请求重定向到/public_html/index.php,该文件是否存在?因为如果存在,您的请求RewriteRule将被忽略。您必须删除RewriteCond上述内容,或删除该/public_html/index.php文件。

相关内容