apache htaccess不工作时,我使用rewriterule /canonical/url到另一个参数?标题=some-title

c9qzyr3d  于 2023-10-23  发布在  Apache
关注(0)|答案(1)|浏览(123)

我正在使用一个网站托管服务器,它接收的URL如下:

https://www.domain.es/blog/name-of-article

.htaccess正在尝试将这些URL转换为GET形式:

https://www.domain-name.es/blog-art.php?title=name-of-article

要做到这一点,我有,在任何其他人之间,这两个规则在.htaccess:

\# blog.php
RewriteRule ^(.*blog)$ https://www.my-domain.es/blog.php [NC,R=301]
\# blog_art.php`
RewriteRule ^(.*blog)\/(.+)$ https://www.my-domain.es/blog_art.php?titulo=$2 [NC,R=301]

第二个是不工作,它只在我的PC上工作时,它是localhost,但不工作时,它是在网络托管服务器上。
为什么?为什么?
我尝试了我的本地主机环境,一切正常。我希望这些规则也能在网络托管服务器上工作,但第二个没有。

ohfgkhjo

ohfgkhjo1#

非常感谢,CBroe
我在阅读你的文章之前解决了这个问题:

Options -Multiviews

...

# blog.php
RewriteCond %{REQUEST_URI} .*blog$
RewriteRule .*blog$ https://localhost:33/blog.php [NC,R=302,L]

# blog_art.php
RewriteCond %{REQUEST_URI} .*blog/(.+)$
RewriteRule .*blog/(.+)$ https://localhost:33/blog_art.php?titulo=$1 [NC,R=302,L]

...
你是对的,我不需要.*在博客$之前,我也不需要捕捉它。我做这件事的时候并不知道太多,只是出于“以防万一”的考虑。
我不得不阅读文档并进行测试。
我发现了一个非常好的htaccess测试页面,我强烈推荐:
https://htaccess.madewithlove.com/
我发现它在:
Tips for debugging .htaccess rewrite rules
我强烈推荐这一点。
你建议我在测试中使用R=302也是正确的。
我也可以推荐你看看apache关于重写规则标志的文档:
https://httpd.apache.org/docs/2.4/rewrite/flags.html
所以你说的都对。
非常感谢
现在已经修好了。

相关问题