【问题标题】:Mod Rewrite php htaccessMod重写php htaccess
【发布时间】:2013-08-13 02:57:27
【问题描述】:

我正在尝试在我的网站上使用干净的 url 以获得更好的 SEO。我这样做是使用带有 htaccess 的 mod 重写。网址如下http://mywebsite.com/s.php?share=100,我想接受http://mywebsite.com/s/100 之类的网址或用户选择的任何数字。我正在使用这个重写正则表达式,但它没有按预期工作

   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME}!-f
   RewriteCond %{REQUEST_FILENAME}!-d
   RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php 
   RewriteRule ^share/([^/]*)$ /s.php?share=$1 [L]

谁能指出我做错了什么?

【问题讨论】:

    标签: php regex .htaccess mod-rewrite


    【解决方案1】:

    您希望您的 URL 看起来像 http://mywebsite.com/s/100,这意味着 URI 是 /s/100,但您的模式看起来像 ^share/([^/]*)$。由于 URI 不以“share”开头,因此该模式将永远与您想要的 URI 匹配。试试:

    RewriteRule ^s/([^/]*)$ /s.php?share=$1 [L]
    

    此外,由于您正在请求 /s/ 并且有一个名为 /s.php 的文件,因此您需要确保 Multiviews 已关闭:

    Options -Multiviews
    

    总之,类似于:

    Options -Multiviews
    
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME}!-f
    RewriteCond %{REQUEST_FILENAME}!-d
    RewriteRule ^([a-z]+)/([a-z\-]+)$ /$1/$2.php 
    RewriteRule ^s/([^/]*)$ /s.php?share=$1 [L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多