.htaccess mod_rewrite解释

时间:2014-01-04 10:47:51

标签: php apache .htaccess mod-rewrite

我一直试图让这个mod重写一下。基本上我想要:

  • removed.com/WineGlass/Vin.php
  • removed.com/Chandelier/Auto.php

要翻译成:

  • removed.com/news.php?post=Vin.php&cat=WineGlass
  • removed.com/news.php?post=Auto.php&cat=Chandelier

到目前为止,我有:

Options -Multiviews
Options +FollowSymLinks  
RewriteEngine On  

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)/(\w+.php)$ ./news.php?cat=$1&post=$2

我对正在发生的事情的理解是,它应该尝试确定文件是否存在,如果不存在,请检查它是否符合模式。如果它符合模式,它应该将URL重写为所需的URL。

  • 我使用GoDaddy.com作为我的主持人,我在网上发现了很多帖子 建议 - 需要多视图。
  • 确切的错误是:请求的网址/poz/WineGlass/Vin.php不是 在这台服务器上找到。
  • root / / /这就是news.php休息的地方
  • 我使用regexr.com来测试正则表达式:http://regexr.com?37s5e
  • 加分:我尝试了几种方法来排除上面示例中的最后一个网址,但无法解决。如果你可以提供帮助,我会非常感激。

1 个答案:

答案 0 :(得分:2)

DOCUMENT_ROOT/.htaccess文件中使用此规则:

Options +FollowSymLinks -Multiviews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^.]+\.php)$ /news.php?cat=$1&post=$2 [L,QSA]