如何使用mod_rewrite并编辑URL路径?

时间:2013-11-13 15:04:37

标签: php apache .htaccess mod-rewrite

我很抱歉问这样一个问题,周围有数百个问题,我不会问我是否需要理解。我已经尝试了无数次.htaccess但无法使其工作,我也在本地服务器上进行测试,但我确定mod_rewrite已经开启,所以应该是我正在制作的错误。

我目前正在尝试从

更改m网址

example.com/article.php?article_id=article-id-goes-here&article_title=article-title-goes-here

example.com/article/75/article-title-goes-here

我尝试过的最新代码如下:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/$ webroot/article.php?article_id=$1&article_title=$2 [QSA,L]

我的文件夹结构目前为

blog/

   libraries/
      articleClass 
          articleClass.php

   webroot/
      css/
      images/
      js/

   .htaccess

我将所有内容转发给webroot,因为那是我的索引页。

2 个答案:

答案 0 :(得分:0)

你的模式末尾有一个额外的斜杠,而你所说的URL中没有这个斜杠:

RewriteRule ^([^/]+)/([^/]+)/?$ webroot/article.php?article_id=$1&article_title=$2 [QSA,L]

您可以通过在其后添加?来使其成为可选项。

答案 1 :(得分:0)

  

example.com/article.php?article_id=article-id-goes-here&article_title=article-title-goes-here

     

     

example.com/article/75/article-title-goes-here

尝试此规则:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^article/([^/]+)/([^/]+)/?$ webroot/article.php?article_id=$1&article_title=$2 [QSA,L,NC]