【问题标题】:Mod_rewrite, check if string is emptymod_rewrite,检查字符串是否为空
【发布时间】:2014-09-22 01:01:32
【问题描述】:

我需要编写一个 .htaccess 文件来重写所有在域之后有任何内容的 url。

例如RewriteRule ^(.*)$ index.php?page=course&course=$1 [L]

但这也会将example.com 发送到重写后的网址,我不希望这样。仅当这些确实是域之后的内容时,我才希望它重写它,例如example.com/CITA180

我知道我可以先做example.com/c/CITA180,然后再做RewriteRule ^c/(.*)$ index.php?page=course&course=$1 [L],但如果没有必要,我不想那样做。

谢谢。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您可以使用.+ 而不是.* 来确保它与着陆页不匹配。您还需要RewriteCond %{REQUEST_FILENAME} !-f 条件以避免匹配默认着陆页:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)$ index.php?page=course&course=$1 [L]
    

    【讨论】:

      【解决方案2】:

      添加正则表达式条件:RewriteCond %{REQUEST_FILENAME} REGEX

      在你的情况下:RewriteCond %{REQUEST_FILENAME} [A-Z]
      这将检查它是否包含任何字符。

      除了没有文件检查:RewriteCond %{REQUEST_FILENAME} !-f

      【讨论】:

        猜你喜欢
        • 2015-06-12
        • 1970-01-01
        • 2015-06-05
        • 1970-01-01
        • 2017-08-19
        • 1970-01-01
        • 2011-11-25
        相关资源
        最近更新 更多