1

我在我的 htaccess 文件中使用此代码将所有请求重定向到 index.php 并且它可以工作。

RewriteEngine On

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

RewriteRule ^(.*)$ index.php [L,QSA]

现在,我正在尝试将几个请求重定向到另一个文件public.php(即如果用户登录,则通过 index.php 加载所有内容,否则通过 public.php 加载文件 - 这就是想法)

我尝试了几种对其他人有用的方法,但似乎没有一个对我有用。我不知道为什么。

应用程序结构是

[FOLDER]
app
www
static
.htaccess

这是根文件夹中使用的 .htaccess

RewriteCond %{HTTP_HOST} ^(www.)?website.com
RewriteRule ^(.*)$ www/index.php?$1 [L,QSA]


RewriteCond %{HTTP_HOST} ^(static.)?website.com
RewriteRule ^(.*)$ static/index.php?$1 [L,QSA]


RewriteCond %{HTTP_HOST} ^([^.]+)\.website\.com$ [NC] 
RewriteRule ^(.*)$ app/index.php?$1 [L,QSA]

默认情况下,如果子域是www或文件分别从和文件夹static加载。如果通过其他子域访问 url,则从目录加载文件。wwwstaticapp

我试过的代码是

RewriteEngine On

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

RewriteRule ^public$ public.php [L,QSA]
RewriteRule ^(.*)$ index.php [L,QSA]

互换了这两行,并尝试删除 L,QSA

还有许多其他人..,我可以在 Google + Stackoverflow 上找到很多人。,但他们都没有工作,I guess its not working due to how i have coded the .htaccess file in the root directory..

如果你们发现这个 htaccess 代码有任何明显的问题,请让我知道如何解决它,无论我如何尝试学习 htaccess,我总是很烂,如果你知道任何与此相关的好教程,请发布它的链接以及..,我已经用谷歌搜索并阅读了很多关于它的文章。

4

1 回答 1

1

花了一点时间才意识到出了什么问题,但它在这里......

RewriteEngine On

# first line: If the filename contains public.php, dont rewrite again.
# second line: If the requested URI contains /public, rewrite to public.php
RewriteCond %{REQUEST_FILENAME} !/public.php [NC]
RewriteCond %{REQUEST_URI} ^/public
RewriteRule ^(.*)$ public.php?$1 [L]


# Now here layed the problem, you do NOT want to rewrite the requested URI IF it is pointing to an actual file on the server.
# Thus, a condition for rewriting to index.php, is that the file does not exist.
# The second condition is that the directory does not exist. Not sure you need that though.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$ [L]

因此,第 3 个 htaccess 的问题在于“RewriteCond %{REQUEST_FILENAME} !-f”正在处理“公共”重写,而不是应该在 index.php 上。希望这能解决您的问题!

于 2013-08-08T19:17:19.177 回答