在 htaccess 文件中使用 modrewrite 进行 URL 转发

问题描述

我目前正在调整我的 .htaccess 文件,但需要帮助。

所有的 URL 都应该被重定向

大字符应该转换成小字符。 如果被调用地址存在,则直接调用文件。 所有其他不存在的地址都应该转发到 Index.PHP

现在调用以下链接

  • www.example.com/test1/test2/test3.html
  • example.com/TeST1/TEST2/test3.html
  • www.example.com/test1/test2/test3

转发应始终调用 Index.PHP,地址行中应包含以下内容http://example.com/test1/test2/test3.html

如果我有变量 (example.com/TeST1/TEST2/test3.html?id=6&test=hello) 这些当然也应该被转移。

为了使我的 CSS 文件和图像可以正确集成,我想我必须停用某些文件类型的转发。 以下文件夹应从重定向中排除:css、media、img

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d    
RewriteCond %{SCRIPT_FILENAME} !-f   
RewriteRule ^.*$ /index.PHP [L,QSA]

有人可以编写文件或帮助我吗?

解决方法

试试:

RewriteEngine On

RewriteMap lc int:tolower
RewriteCond ${REQUEST_FILENAME} !-d
RewriteCond ${REQUEST_FILENAME} !-f
RewriteRule (.*[A-Z].*) /${lc:$1} [R=302,L]
# if you encounter double slashes,remove the slash before ${lc...

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.html [QSA,L]