陷入了一个非常基本的.htaccess重写

时间:2012-09-29 19:04:53

标签: .htaccess mod-rewrite url-rewriting

<h1><a href="profile.php?id=' . $id . '" target="_self">' . $name. '</a></h1>

以上是指向我的profile1.php文件的参考。该文件名为index.php。它目前显示网址:

http://www.domain.com/interact/profile1.php?id=36

我尝试过实现.htaccess文件来重写网址。我尝试了很多组合,其中大多数都给出了500错误,有些没有重写网址。 这是我使用的.htaccess文件,它不会使URL更改。

我希望网址看起来像http://www.domain.com/interact/profile/36

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ profile1.php/$1 [QSA,L]
</IfModule>

我知道这是一个非常基本的问题,但我似乎陷入其中并阅读了基本教程,但我无法正确实施。

文件index.php,profile1.php和.htaccess位于名为interact的文件夹中。

告诉我php或.htaccess文件中所需的任何更改。

2 个答案:

答案 0 :(得分:1)

  

目前显示的网址为: http://www.domain.com/interact/profile1.php?id=36

     

...

     

我希望网址看起来像 http://www.domain.com/interact/profile/36

第1步:

更改您的内容,使其具有以下链接:

<h1><a href="profile/' . $id . '" target="_self">' . $name. '</a></h1>

这样,当您点击链接时,网址地址栏中显示的网址将如下所示: http://www.domain.com/interact/profile/36

第2步:

然后你需要使用这些规则进行内部更改:

RewriteEngine On
RewriteBase /interact/
RewriteRule ^profile/([0-9]*) profile1.php?id=$1 [L,QSA]

为了将任何外部链接(例如谷歌索引机器人)指向新网址,您还需要添加这些链接:

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /interact/profile1\.php\?id=([0-9]*)
RewriteRule ^ http://www.domain.com/interact/profile/%2 [L,R=301]

答案 1 :(得分:0)

试试这个

  RewriteRule ^interact/profile1.php/(.*)$ interact/profile1.php?id=$1 [L]

我不知道QSA修饰符是做什么的,所以我将其删除。如果你知道什么,请使用它)