Regex 使用.htaccess从url剪切文件夹,该文件夹可以位于url中的任何位置 我已经彻底搜索了删除URL中间的文件夹的方法,如下面的例子所示:
我所拥有的:Regex 使用.htaccess从url剪切文件夹,该文件夹可以位于url中的任何位置 我已经彻底搜索了删除URL中间的文件夹的方法,如下面的例子所示:,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我所拥有的: http://www.website.com/company/pages/section/content 我想去掉/pages/part,使其看起来像这样: http://www.website.com/company/section/content 值得注意的是,我已经使用了一点.htaccess来删除.php扩展名,所以这可能与所需的重定向冲突?下面是我用来删除.php的内容: RewriteCond %{REQUEST_FILENAME} !-f RewriteRule
http://www.website.com/company/pages/section/content
我想去掉/pages/part,使其看起来像这样:
http://www.website.com/company/section/content
值得注意的是,我已经使用了一点.htaccess来删除.php扩展名,所以这可能与所需的重定向冲突?下面是我用来删除.php的内容:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
到目前为止,我发现的解决方案似乎非常有效,如果您试图删除url后作为根目录的文件夹,但是/pages/文件夹可以在我工作的网站的url中处于任何级别(有时在根目录下,有时在/company/之后,有时在/company/data/之后,等等)。唯一可预测的是文件夹的名称,它将始终是“/页” 作为参考,这是我尝试过但不起作用的方法:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^pages/(.*)$ /$1 [L,NC,R]
提前感谢所有能够提供帮助的人。在root.htaccess中尝试以下代码:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteRule ^(company)/((?!pages/).+)$ $1/pages/$2.php [L,NC]
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^([^.]+)/?$ $1.php [L]
你的.htaccess在哪里?
/company
是真正的目录吗?同时在问题中显示完整的.htaccess.htaccess位于根目录()。当前htaccess:Options+FollowSymlinks-multiviewsrewriteengine On RewriteCond%{REQUEST_FILENAME}-f RewriteRule^([^\.]+)$$1.php[NC]您好,谢谢您的帮助。这样,我得到了一个错误而不是页面:找不到此服务器上找不到请求的URL/company/pages/section/content。添加了R后,页面确实正确加载,但/pages/仍在URL中。也许我应该尝试重新安装我的Apache,似乎我的问题是不应该发生的。不,在一个由其他人从头开始创建的公司网站上工作。是的,如果没有.htaccess,实际的url是/company/pages/section/content.phpIt仍然没有删除/pages/。非常感谢您的帮助,我想我会尝试以不同的方式重建网站,使其具有更合理的文件夹结构,并重新安装apache以确保那里没有问题。