0

基本上,我正在尝试将我的查询字符串 url 转换为用于 SEO 目的的目录结构。而且我已经到了尝试在 .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]

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

4

1 回答 1

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]
于 2013-07-10T22:01:01.900 回答