我在 Apache Web 服务器上有一个 PHP Web 应用程序。
服务器上 Web 应用程序的路径是:/var/www/html/intern/organisation/example_app
Web 应用程序的 URL 为:
https://www.example.de/org1/intern/example_app/
我希望所有请求都https://www.example.de/org1/intern/example_app/view1/
重定向到
https://www.example.de/org1/intern/example_app/index.php
在我的本地 XAMPP 服务器上,我使用以下 .htaccess 文件,它可以用于此目的:
RewriteEngine On
RewriteBase /example_app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php [L]
但我不知道该文件在服务器上应该是什么样子?我在服务器上也使用 httpd.conf。我想知道该文件是否会干扰.htaccess
下面的文件:/var/www/html/intern/organisation/example_app/
有人知道如何在服务器上配置重写吗?
答案1
.htaccess
子目录中的文件应/org1/intern/example_app/
如下所示:
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
.htaccess
然后,您可以在本地和实时服务器上使用同一个文件,只要它位于example_app/
子目录中即可。
只要该文件与您想要重写的文件.htaccess
位于同一目录中,那么您就不需要该指令。index.php
RewriteBase
该DirectoryIndex
指令可能已在服务器配置中设置为index.php
,因此这里可能不需要它,但为了完整性,应该将其包括在内。当请求应用程序目录本身时(即https://www.example.de/org1/intern/example_app/
),它是必需的。
请注意,这是“内部重定向”,通常称为“重写”。如果您简单地说“重定向”,则意味着“外部 (HTTP) 重定向”,这完全是另一回事。
我想知道该文件是否会干扰
.htaccess file
下面的文件:/var/www/html/intern/organisation/example_app/
多个.htaccess
文件(和服务器配置)可能会发生冲突。但是,子配置中的 mod_rewrite 指令(在同一个语境, IE。目录) 将完全覆盖父配置中的 mod_rewrite 指令(默认)。
在旁边:(或可能不是)
服务器上 Web 应用程序的路径是:
/var/www/html/intern/organisation/example_app
Web 应用程序的 URL 为:
https://www.example.de/org1/intern/example_app/
虽然有点令人困惑,但文件路径和 URL 路径似乎不匹配?您是否Alias
在服务器配置中进行了额外的重写或配置,或者example_app
文件路径中的目录与example_app
URL 路径中的目录不同?
答案2
非常感谢您的详细解答。重写规则不是问题。
问题很简单。整个 .htaccess 不起作用,因为我必须在 httpd.conf 上激活 AllowOveride。