RewriteRule小写转换仅适用于文件名

蜥蜴

我试图将大写字母文件名仅重定向到服务器上的小写文件,并保留完整的目录大小写。

我无权访问httpd.conf。

我发现是这样的伎俩与PHP和重写规则,但在我的情况,我无法捕捉到的目录$_SERVER['HTTP_HOST']/base/filename,所以我在重定向失去了他们引起的apache失败。

规则是:

RewriteEngine on
RewriteBase /

# force url to lowercase if upper case is found
RewriteCond %{REQUEST_URI} [A-Z]
# ensure it is not a file on the drive first
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule (?=([^\/])*(\.htm|\.html|\.jpg))(.*) rewrite-strtolower.php?rewrite-strtolower-url=$3 [QSA,L]

RegEx(?=([^\/])*(\.htm|\.html|\.jpg))(.*)捕获并仅将文件名传递给进行真正重定向的php脚本:

<?php
if(isset($_GET['rewrite-strtolower-url'])) {
    $url = $_GET['rewrite-strtolower-url'];
    unset($_GET['rewrite-strtolower-url']);
    $params = http_build_query($_GET);
    if(strlen($params)) {
        $params = '?' . $params;
    }
    header('Location: http://' . $_SERVER['HTTP_HOST'] . '/base/' . strtolower($url) . $params, true, 301);
    exit;
}
header("HTTP/1.0 404 Not Found");
die('Unable to convert the URL to lowercase. You must supply a URL to work upon.');

我需要测试的网址示例是:

http://test.com/base/some Folder/some Other subfolder/Some-File-Name.jpg

所需结果:

http://test.com/base/some Folder/some Other subfolder/some-file-name.jpg

有没有一种方法可以纠正一些问题,以捕获我抛出的URL部分?

编辑:我的整个.htaccess在这里可见

巴拿马杰克

不要使用确切的示例。您也可以在PHP中获得完整路径。您无需捕获URI。您可以REQUEST_URI在PHP中使用以获取完整路径。我会做这样的事情。只需将完整的请求发送到php,然后在那里进行处理即可。

RewriteEngine on
RewriteBase /

#don't do anything if php file is directly requested. 
RewriteRule ^rewrite-strtolower\.php - [L]

# force url to lowercase if upper case is found
RewriteCond %{REQUEST_URI} [A-Z]
# ensure it is not a file on the drive first
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule . /rewrite-strtolower.php [L]

// php文件

<?php
if(isset($_SERVER["REQUEST_URI"])){

    $URI = $_SERVER["REQUEST_URI"];
    $URI = ltrim($URI,"/");
    $parts = explode("/",$URI);
    $filename = array_pop($parts);
    $URI = implode("/",$parts);

    header('Location: http://' . $_SERVER['HTTP_HOST'] .'/'.$URI.'/'.strtolower($filename), true, 301);
    exit;

}
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RewriteRule 仅适用于主页

来自分类Dev

内容处理文件名不适用于IE

来自分类Dev

'eslint' 不适用于文件名

来自分类Dev

sed适用于硬编码的文件名,但不适用于包含所述文件名的变量

来自分类Dev

将文件名转换为小写

来自分类Dev

仅当它们不存在时才批处理 Zip 文件不适用于不同目录中的相同文件名

来自分类Dev

静态文件版本控制的htaccess重定向问题不适用于.min文件名

来自分类Dev

为什么文件浏览器搜索不适用于部分文件名?

来自分类Dev

TAR操作不适用于文件名中的变量

来自分类Dev

在Git控制台中,路径不适用于%20的文件名空间

来自分类Dev

Perl:重命名不适用于$ value文件名

来自分类Dev

在Git控制台中,路径不适用于%20的文件名空间

来自分类Dev

CTRL + A选择整个文件名不适用于桌面上的图标

来自分类Dev

如何使.exrc脚本仅适用于特定文件扩展名?

来自分类Dev

适用于Android的Google Drive Web服务API-在文件夹中显示文件名

来自分类Dev

适用于Android的Google Drive Web服务API-在文件夹中显示文件名

来自分类Dev

重命名文件夹中的文件名时,通配符不适用于重命名

来自分类Dev

jQuery仅适用于.html文件,而不适用于.PHP文件?

来自分类Dev

CSS转换仅不适用于IOS

来自分类Dev

日期转换问题仅适用于Chrome

来自分类Dev

使用选项卡进行自动补全不适用于某些类型的文件名

来自分类Dev

长文件名不适用于 png 设备。故障排除和解决方法建议

来自分类Dev

文件/内容意图过滤器不适用于BroadcastReceiver,仅适用于活动

来自分类Dev

javascript仅适用于<script>标记,不适用于js文件

来自分类Dev

.htaccess RewriteRule不适用于“ /”

来自分类Dev

.htaccess RewriteRule不适用于“ /”

来自分类Dev

匹配所有文件(具有特定扩展名的文件除外)的Bash匹配,适用于包含点字符的文件名

来自分类Dev

XML解析仅适用于较大的xml文件的子集

来自分类Dev

OpenAL仅适用于caff格式的音频文件

Related 相关文章

  1. 1

    RewriteRule 仅适用于主页

  2. 2

    内容处理文件名不适用于IE

  3. 3

    'eslint' 不适用于文件名

  4. 4

    sed适用于硬编码的文件名,但不适用于包含所述文件名的变量

  5. 5

    将文件名转换为小写

  6. 6

    仅当它们不存在时才批处理 Zip 文件不适用于不同目录中的相同文件名

  7. 7

    静态文件版本控制的htaccess重定向问题不适用于.min文件名

  8. 8

    为什么文件浏览器搜索不适用于部分文件名?

  9. 9

    TAR操作不适用于文件名中的变量

  10. 10

    在Git控制台中,路径不适用于%20的文件名空间

  11. 11

    Perl:重命名不适用于$ value文件名

  12. 12

    在Git控制台中,路径不适用于%20的文件名空间

  13. 13

    CTRL + A选择整个文件名不适用于桌面上的图标

  14. 14

    如何使.exrc脚本仅适用于特定文件扩展名?

  15. 15

    适用于Android的Google Drive Web服务API-在文件夹中显示文件名

  16. 16

    适用于Android的Google Drive Web服务API-在文件夹中显示文件名

  17. 17

    重命名文件夹中的文件名时,通配符不适用于重命名

  18. 18

    jQuery仅适用于.html文件,而不适用于.PHP文件?

  19. 19

    CSS转换仅不适用于IOS

  20. 20

    日期转换问题仅适用于Chrome

  21. 21

    使用选项卡进行自动补全不适用于某些类型的文件名

  22. 22

    长文件名不适用于 png 设备。故障排除和解决方法建议

  23. 23

    文件/内容意图过滤器不适用于BroadcastReceiver,仅适用于活动

  24. 24

    javascript仅适用于<script>标记,不适用于js文件

  25. 25

    .htaccess RewriteRule不适用于“ /”

  26. 26

    .htaccess RewriteRule不适用于“ /”

  27. 27

    匹配所有文件(具有特定扩展名的文件除外)的Bash匹配,适用于包含点字符的文件名

  28. 28

    XML解析仅适用于较大的xml文件的子集

  29. 29

    OpenAL仅适用于caff格式的音频文件

热门标签

归档