.htaccess更改以将查询字符串转换为目录格式

时间:2013-07-10 16:37:47

标签: .htaccess mod-rewrite

基本上我正在尝试将查询字符串网址转换为目录结构以用于搜索引擎优化目的。我一直在试图在.htaccess文件中以许多语义方式说出相同的逻辑,看看我是否能得到结果。这是我想要做的。

请求是: mywebsite.com/test/antitrust/somelongfilename /

然后修改为要求: mywebsite.com/test/antitrust/?id=news&post=news/somelongfilename.html

因此,当人们点击我的SEO友情链接时,他们会变成我的PHP代码可以阅读的丑陋链接。 “somelongfilename.html”不会单独显示,只是将内容推送到php文件的内容区域。

仅供参考,post = news / somelongfilename.html实际上是从antitrust目录转到的目录/文件,所以它位于/ test / antitrust / news。它一直工作得很好,尽管将/放入查询字符串可能不是一个好主意。

.htaccess位于子目录/ antitrust中,因为我不想触及根目录.htaccess作为服务许多我不想影响的网站,因为我不是.htaccess专家。

RewriteOptions inherit
RewriteEngine On
RewriteCond %{HTTP_HOST} news
RewriteRule ^/(.*) index.php/?id=news&post=$1 [QSA,L]

还尝试了许多变体:

RewriteEngine On
RewriteOptions inherit
RewriteCond %{HTTP_HOST} ^news$
RewriteRule \/(.+?)\/?   ^?id=news&post=$2 [QSA,L]
RewriteRule ?id=(.+?)&post=(.+?) http://mywebsite.com/test/crush/antitrust/$1/$2/ [QSA,R]

关于我做错什么部分的任何想法?感谢。

1 个答案:

答案 0 :(得分:0)

尝试:

RewriteEngine On
RewriteOptions inherit

RewriteBase /test/antitrust/

# not sure why you need this, it's not part of your question
RewriteCond %{HTTP_HOST} news

# conditions to prevent looping
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*?)/?$ index.php?id=news&post=$1 [QSA,L]