我很困惑。我找到了这个问题的答案,但我找不到任何我可以实际联系的内容。
我使用一个简单的mod重写脚本来摆脱 .php 扩展并添加一个尾随的slashon PHP文件。我有几个简单的PHP页面来处理。什么都没有惊天动地。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([a-z]+)\/?$ $1.php [NC,L]
突然间我意识到,如果一个文件在名称中有一个破折号,那么脚本就会破碎,而我得到了一个404 pahe not found ,,,
www.domain.com/some-file-name.php
我在Chrome和Firefox上获得相同的行为
答案 0 :(得分:2)
问题在于你的正则表达式。您只允许lowercase letters
([a-z]+).
您需要扩展正则表达式以包含更多字符。您可以使用([\w-]+)
,其中包括字母,数字和短划线。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([\w-]+)/?$ $1.php [NC,L]
\w
是简写,包括a-z,A-Z,0-9,包括_(下划线)字符。然后添加破折号允许破折号。