2

我的设置中的 htaccess 重写条件存在问题。

目前我有以下代码。

   Options +FollowSymLinks 
   RewriteEngine on 
   RewriteCond %{REQUEST_FILENAME}\.php -f 
   RewriteCond %{REQUEST_FILENAME} !-d 
   RewriteRule ^(.*)$ http://mydom.com/$1.php

这适用于任何使它们看起来像这样的基本页面。

   http://mydom.com/page

我还想做的是从 url 添加参数(如果存在)。我有一些页面会是这样的。

  http://mydom.com/page?param=1&secondParam=2 

我试图做的是添加这个。

   RewriteCond %{REQUEST_FILENAME} !-d

   RewriteRule ^(.*)/(.*)/(.*)$ http://mydom/$1/$2/$3 [L]
   RewriteRule ^(.*)/(.*)$ http://mydom/$1/$2 [L]

这对我来说很有意义,因为我认为如果条件不匹配,它会继续前进,但这给了我一个内部服务器错误。

4

1 回答 1

0

我最终做的是为每个可能有多个参数的页面设置一个单独的规则。

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^page /(.)/(.)$ http://mydom.com/page.php?param= $1&secondParam= $ 2 [L ]

RewriteRule ^page/(.*)$ http://mydom.com/page.php?param= $1 [L]

RewriteRule ^(.*)$ http://mydom.com/ $1.php

这可行,但是您需要记住您网站中可能拥有的相关链接,例如样式表和 javascript 文件。就我而言,我必须用完整的站点路径替换所有相对路径,具体取决于您设置站点的方式,替换可能需要一段时间。

于 2013-04-23T02:10:08.520 回答