【问题标题】:.HTAccess - How to modify a url with under score in file name as sub directory?.HTAccess - 如何将文件名中带有下划线的 url 修改为子目录?
【发布时间】:2015-06-11 19:12:09
【问题描述】:

假设我有一个包含以下文件的目录:

news_sports.html
news_food.html
news.html
index.html

我将如何使用 .Htaccess 进行设置,以便当http://example.com/en-gb/news/sports 访问我的网站时,它会从 news_sports.html 和 http://example.com/en-gb/news/food 读取 news_food.html 和 http://example.com/en-gb/news (有或没有末尾的斜线)读取 news.html

我当前的 .Htaccess 文件:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/$1_$2\.html -f
RewriteRule ^en-gb/([^/]+)/([^/.]+)/?$ $1_$2.html [L,NC]

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

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteRule ^en-gb(.*)$ /site/views/en/gb/$1 [L,NC]

目录结构

HTDOCS
  ->site
    ->views
       ->en
         ->gb
            ->index.html
            ->news.html
            ->news_sport.html
            ->news_food.html
         ->us
         ->au

总结一下,我希望当用户使用以下网址进入我的网站时:http://example.com/en-gb/news/sports apache 需要从 HTDOCS ->site->views->en->gb->news_sports.html

提前致谢

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    您可以对下划线条件使用新规则:

    RewriteEngine on
    
    RewriteRule ^en-gb/([^/]+)/([^/.]+)/?$ /site/views/en/gb/$1_$2.html [L,NC]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    
    RewriteCond %{DOCUMENT_ROOT}/$1\.html -f
    RewriteRule ^(.+?)/?$ $1.html [L]
    
    RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
    RewriteRule ^(.+?)/?$ $1.php [L]
    
    RewriteRule ^en-gb(.*)$ /site/views/en/gb/$1 [L,NC]
    

    【讨论】:

    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2023-03-19
    • 1970-01-01
    • 2021-05-29
    • 2017-06-27
    • 2013-01-24
    相关资源
    最近更新 更多