是否可以制定重写规则来执行此操作?
我的php文件都有第一个字符大写,有些可能有连字符
喜欢
Filename.php和File-Name.php
首先
# Try this rewrite only if the file is not found
RewriteCond %{REQUEST_FILENAME} !-f
然后我想为像
这样的请求制定规则mysite.com/thing
mysite.com/Thing
mysite.com/THING
重写
中的真实文件mysite.com/Thing.php
或(带连字符)
mysite.com/another-thing
mysite.com/Another-Thing
mysite.com/ANOTHER-THING
重写
中的真实文件mysite.com/Another-Thing.php
然后如果文件仍未找到,请放弃并重新将错误写入index.php,即
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [R=301,L]
我可以想办法在php中这样做但不确定是否可以在重写时完成。
$url = str_replace('-', ' ', $url);
$url = ucwords(strtolower($url));
$url = str_replace(' ', '-', $url) . ".php";
谢谢。
答案 0 :(得分:0)
您可以将以下声明添加到apache或vhost配置文件中:
RewriteMap lc int:tolower
然后,在同一文件或.htaccess
文件中的以下规则可以使用此映射函数对字符串进行操作,例如
RewriteRule ^ - [E=LC_URI:${lc:%{REQUEST_URI}}]
现在您可以在重写规则中使用%{ENV:LC_URI}
,或者如果您想删除前导/:
RewriteCond ${lc:%{REQUEST_URI}} ^/(.*)$
RewriteRule ^.* %1 [E=LC_FILE:%1]
等