Php 将请求重写到子目录
假设Php 将请求重写到子目录,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,假设xyz目录中有一个web应用程序。我正在尝试将所有请求重定向到子目录www。我当前的.htaccess代码是: RewriteEngine On RewriteRule (.*) /www/$1 [L] 但是,当我访问http://example.com/xyz/some_url请求被重定向到http://example.com/www/some_url而不是http://example.com/xyz/www/some_url我想要的 更新:抱歉,我忘了提到目录xyz,因为在我的情况下,
xyz
目录中有一个web应用程序。我正在尝试将所有请求重定向到子目录www
。我当前的.htaccess代码是:
RewriteEngine On
RewriteRule (.*) /www/$1 [L]
但是,当我访问http://example.com/xyz/some_url
请求被重定向到http://example.com/www/some_url
而不是http://example.com/xyz/www/some_url
我想要的
更新:抱歉,我忘了提到目录xyz,因为在我的情况下,它可能会被重命名。因此,此目录不需要在重写规则中硬编码如果DocumentRoot不包含
xyz
路径,则需要在重写规则中指定
例如:
RewriteRule(.*)/xyx/www/$1[L]
这应该有效或者很接近我认为:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/([^/]+)$ $1/www/$2 [L]
将此规则放入
/xyz/.htaccess
:
RewriteEngine On
RewriteBase /xyz/
RewriteRule ^((?!www/).*)$ www/$1 [L,NC]
使用相对路径和两个.htaccess文件
您只需删除前导/url即可重写为相对于当前文件夹的url:
# /xyz/.htaccess
RewriteEngine on
RewriteRule (.*) www/$1 [L]
这将把/xyz/foo
重写为/xyz/www/foo
要防止重定向循环,请将.htaccess
文件添加到www
子文件夹中,例如:
# /xyz/www/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
根据需要进行调整。对不起,我忘了提到目录xyz,因为在我的情况下可能会重命名。因此,这个目录不需要在重写中硬编码rule@VarunAgw那么我相信你需要确保这是我不明白你说的话的一部分。xyz位于文档根目录中,可以由用户重命名。您可能需要进一步调查。例如,Wordpress通过允许覆盖包含重写的.htaccess文件来解决此问题。因此允许更改路径,并相应地更新重写。对不起,我忘了提到目录xyz,因为在我的情况下可能会重命名。因此,这个目录不需要在重写规则中硬编码。我不确定您希望逻辑是什么。那么,是否要将任何子目录中的任何内容重定向到子目录/www?将所有内容从重定向到。其中x,y,z可以是任意数量的目录。对不起,我这边没有工作…正在重写
http://vk.eight/a/dsad
至http://vk.eight/a/dsad
而不是http://vk.eight/a/www/dsad
请检查您的评论,您在同一个URL上放了两次,所以这对我来说不太好。在删除第二行之后<代码>重写基/xyz/