删除?和&来自URLS

时间:2014-03-28 17:08:30

标签: php html .htaccess web

所以目前我使用这段代码:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(index\.php)?\?([^&\ ]+)
RewriteRule ^ /%1? [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]

如果我使用例如:localhost /?login - >它可以很好地工作本地主机/登录

但是我决定要为我的论坛修复此问题,该论坛使用localhost /?forum& id = 123并使其看起来像localhost / forum / 123

而且我不太确定如何解决这个问题,现在试了几个小时。

2 个答案:

答案 0 :(得分:0)

我想在前几天实现类似的功能,这就是我最终在我的.htaccess文件中运行的内容。

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^forum/(.+)\.php /forum?id=$1 [L,QSA]

请注意,我不是正则表达式的专业人士,因此在您的具体情况下,这可能无效。我自己不得不捣乱它一段时间,直到我开始工作。

我的网址看起来像这样:/forum?id=012并且它已转换为/forum/012并且在我的php通话中我在include('/forum/012.php');上有if ($_GET['id'] == '012')(这是一个循环,但是这基本上就是php方面的问题)。

答案 1 :(得分:0)

以下内容应将localhost/?forum&id=123更改为localhost/forum/123

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /\?forum=(.*)&id=(.*)\ HTTP
RewriteRule ^ /%2/%3\? [R,L]