使用.htaccess从url剪切文件夹,所述文件夹可以在url中的任何位置

时间:2015-02-24 14:55:47

标签: 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 ^([^\.]+)$ $1.php [NC]

到目前为止,我发现的解决方案似乎工作得很好,如果你试图删除在url后作为root的文件夹,但/ pages /文件夹可以在我工作的网站的网址中的任何级别on(有时他们在根,有时在/ company /之后,有时在/ company / data /之后)。唯一可预测的是文件夹的名称,它始终是“/ pages”。

作为参考,这是我尝试过的方法不起作用:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^pages/(.*)$ /$1 [L,NC,R]

提前感谢能够提供帮助的任何人。

2 个答案:

答案 0 :(得分:0)

在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]

答案 1 :(得分:0)






<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteCond %{THE_REQUEST} ^GET\ /pages/
RewriteRule ^pages/(.*) /company/section/content/$1 [L,R=301]

如果这不起作用,请尝试这个

&#13;
&#13;
&#13;
&#13;

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteCond %{THE_REQUEST} ^GET\ /pages/company/section/content/
RewriteRule ^pages/company/section/content/(.*) /company/section/content/$1 [L,R=301]