我的.htaccess文件中有两个RewriteRule,该文件托管在godaddy上。第一个用于将http重定向到https并可以正常工作;第二个用于在URL中使用斜杠而不是问号但不起作用。 ?
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.sosyosapien.com/$1 [R,L]
RewriteBase /
RewriteRule ^low/$ https://www.sosyosapien.com/index.php?postt=$1&konu=$2&kategori=$3 [QSA,NC,L]
编辑:为了更加清楚,我的网址现在看起来像:
sosyosapien.com/index.php?postt=23&konu=what_is_sosyosapien&kategori=science
但是我希望它看起来像
sosyosapien.com/index.php/23/what_is_sosyosapien/science
但是我的代码只将http重定向到https并不能以我想要的方式更改URL。很抱歉,我对.htaccess的工作原理没有足够的了解。能否请给我一个代码来执行我需要的工作? / p>
答案 0 :(得分:0)
您很可能不想将此RewriteRule添加到您的.htaccess
中。这是不正确的,并且缺少已被引用的捕获组:
RewriteBase /
RewriteRule ^low/$ https://www.sosyosapien.com/index.php?postt=$1&konu=$2&kategori=$3 [QSA,NC,L]
如果确实需要保留此内容,则可能会发现您可能想要重定向的 $ 1 , $ 2 和 $ 3 。然后,您可以据此更改此^low/$
。
也许,只需添加一下,它可能会起作用:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^sosyosapien\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.sosyosapien.com/$1 [R,L]
RewriteCond %{QUERY_STRING} postt=(.*)
RewriteRule ^(.*)\/index\.php\?postt=([0-9]+)&konu=(\w+)&kategori=(\w+)$ ^$1\/$2\/$3\/$4$ [R,L,302]
</IfModule>
This RegEx可能会帮助您简化表达式,如您所愿,因为我不确定您可能会遇到哪种类型的条件:
^(.*)\/index\.php\?postt=([0-9]+)&konu=(\w+)&kategori=(\w+)$
此图显示了RegEx的工作方式:
您可能需要重新启动apache:
sudo apachectl restart
您还想在每次更改.htaccess
时清除浏览器缓存。