在htaccess中更改文件名会给出错误500

时间:2017-04-17 16:07:46

标签: apache .htaccess mod-rewrite

我已经设置了

 <md-input-container style="width: 200px;" md-input-has-placeholder>
                  <placeholder>Snack Types </placeholder>
                    <md-select ng-model="selectedOption">
                        <md-option  ng-repeat="item in snacks" >
                            {{item.name}}
                        </md-option>
                    </md-select>
 </md-input-container>

指向

mydomain.com/page

使用htaccess和mod_rewrite,效果很好。但是,当我更改文件名和相关的重写规则时,我得到错误500.最初我认为这是一个浏览器缓存问题,但清除缓存没有帮助。这是htaccess文件:

mydomain.com/script.cgi

正如我所说,这完全有效 - 直到我更改文件名和规则。如果我将脚本文件名更改为Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^page(.*)?$ /script.cgi$1 [NE,NC,L] 并将规则修改为指向script2.cgi,则会引发错误。是某种服务器缓存问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了答案。它在这里显而易见,因为我使用了占位符名称。问题是我的别名文件夹和目标脚本以相同的字母开头。

/page -> /page.cgi

因为我在规则中使用了^page(.*)?$,所以它也匹配了page.cgi,从而创建了一个无限循环。答案是将规则更改为^page$以仅匹配整个别名,或者将脚本的名称更改为其他名称。感谢大家。希望这有助于其他人。