【问题标题】:how to write conditional .htaccess file如何编写条件 .htaccess 文件
【发布时间】:2015-04-20 13:54:36
【问题描述】:

我的网站的每个页面都有不同的 URL 和 Seo 变量,页面点击 URL 变为

index.php?seo=home
rates.php?seo=rates
reservation.php?seo=reservation

现在我想把 URL 转换成这个

agnow.us/rates
agnow.us/information
agnow.us/reservation

这是我的 .htaccess 文件。

选项 +SymLinksIfOwnerMatch -Multiviews 重写引擎开启 重写基础/

RewriteCond %{THE_REQUEST} \s/+rates\.php\?seo=([^\s&]+) [NC]
RewriteRule ^ /%1? [L,R=301]

RewriteRule ^/(.*)$ rates.php?seo=$1 [L,NC,QSA]

【问题讨论】:

    标签: php regex .htaccess


    【解决方案1】:

    您可以在根 .htaccess 中使用此代码:

    Options +SymLinksIfOwnerMatch -Multiviews
    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} \s/+rates\.php\?seo=([^\s&]+) [NC]
    RewriteRule ^ /%1? [L,R=301]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^/]+)/?$ rates.php?seo=$1 [L,NC,QSA]
    

    【讨论】:

    • rates.php?seo=rates 更改为agnow.us/rates,这个页面很好,但是当我点击reservation.php?seo=reservation 时,其他页面将如何工作,URL 保持不变跨度>
    • 嗯,现在问题开始了。例如像/foobar 这样的路径可以路由到rates.phpreservation.php,但不能同时路由到两者。作为一种可能的解决方案,您漂亮的 URL 方案可以是 /rates/blabla/reservation/blabla。如果您对此提议满意,请告诉我,我会更新答案。
    • 是否可以更改 agnow.us/pages/rates agnow.us/pages/reservation
    • 保持相同的前缀 /pages 也不会解决问题,因为 URL /pages/foobar 不会告诉我们是否应该调用 rates.php 或任何其他 php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多