【问题标题】:removing subfolder name and file extension from url using htaccess使用 htaccess 从 url 中删除子文件夹名称和文件扩展名
【发布时间】:2015-08-02 16:48:13
【问题描述】:

我想从下面的 url 中删除 seo/ 文件夹名称和文件扩展名 (.html)。我正在开发一个静态 html 网站。

www.example.com/seo/advanced-system.htmlwww.example.com/advanced-system/

在我的 root 文件夹的 .htaccess 中,我写了这个,

RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule ^seo/(.*)$ www.example.com/$1 [L,R=301]

在我的子文件夹的 .htaccess 中,我写了这个,

RewriteRule ^(.*)$ /$1 [R=301,L]

我搜索并尝试了所有可能的方法,但无法找到解决方案。请帮帮我。

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    在我的根文件夹的 .htaccess 中,使用这个

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^((?!seo/).*)$ seo/$1 [L,NC]
    

    /seo/ 的.htaccess 中,使用这个:

    RewriteEngine On
    RewriteBase /seo/
    
    RewriteCond %{DOCUMENT_ROOT}/seo/$1\.html -f [NC]
    RewriteRule ^(.+?)/?$ $1.html [L]
    

    【讨论】:

    • 它不起作用... css 被完全删除,甚至在 url 中“seo”也没有被删除...
    • 查看更新的答案。您必须输入http://domain.com/file,它将加载http://domain.com/seo/file.html
    • 非常感谢。它真的很好用。但是即使我们输入domain.com/seo/file.html,它也应该加载www.domain.com/file/。我们可以这样改变吗?
    • 感谢 Anubhava... 此解决方案不起作用。以前的编辑对我很有用,而且我对链接进行了更改以使其正常工作。能否请您编辑一下,以便我标记答案?
    【解决方案2】:

    试试这个

            RewriteEngine On 
            RewriteRule ^$ seo/ 
            RewriteCond %{REQUEST_FILENAME} !-f 
            RewriteCond %{REQUEST_FILENAME} !-d 
            RewriteRule ^(.*)$ seo/$1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多