在.htaccess

时间:2019-05-04 06:12:19

标签: .htaccess

我的.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>

1 个答案:

答案 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+)$

enter image description here

此图显示了RegEx的工作方式:

enter image description here

  • 您可能需要重新启动apache:

     sudo apachectl restart
    
  • 您还想在每次更改.htaccess时清除浏览器缓存。