我目前:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com
RewriteRule (.*) http://domain.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1 [L]
它从www重定向。到非www地址(这是好的) 并将所有丢失的文件/目录重定向到index.php
但我想改变它: 用户请求丢失文件(domain.com/something.jpg) 得到404错误代码而不是主页,它可以过滤任何。*或只有一些扩展名,如.png | .jpg | .jpeg
我尝试删除" RewriteCond%{REQUEST_FILENAME}!-f", 但它以"由于可能的配置错误而超过了10个内部重定向的限制而结束。使用' LimitInternalRecursion'必要时增加限额。使用' LogLevel debug'至 获得回溯。" :(
我尝试了3个小时,现在添加一些匹配丢失文件并执行R = 404的规则,但它不能正常工作:(
感谢您的帮助
答案 0 :(得分:1)
用以下内容替换您的规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com
RewriteRule (.*) http://domain.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
RewriteRule (.*) index.php/$1 [L]
答案 1 :(得分:0)
您需要在index.php catch-all块之前捕获丢失的图像。在之后添加此 www - >的RewriteCond / RewriteRule域名转换:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} .*\.(jpg|png)$
RewriteRule (.*) - [L,R=404]