Yac*_*oby 2 .htaccess mod-rewrite content-management-system
我正在使用cms将静态网站转换为静态网站.我将cms安装在公共目录的子目录中.为了避免丑陋的域名(http://example.com/cms/),有一种简单的方法可以使用mod_rewrite将http://example.com/ ...重写为http://example.com/cms/ ...同时确保如果请求不会在404中结束,则没有重定向.
一个例子:
/
/cms/index.html
/cms/file.dat
/file.dat
Run Code Online (Sandbox Code Playgroud)
如果用户请求/index.html,它们应该被重定向到/cms/index.html,但是如果它们请求/file.dat,它们不应该被重定向到/cms/file.dat,因为该文件存在于所请求的地点
编辑 感谢您的回答.
您可以使用RewriteCond指令检查是否存在与请求的URL对应的现有文件,如果没有,则仅重写到CMS.
这是一个简单的例子:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
Run Code Online (Sandbox Code Playgroud)
如果没有与请求的URL对应的现有文件,则重写该请求 index.php
您可能还想检查符号链接和/或目录,顺便说一句......
例如,在设置Zend Framework项目时可以使用以下方法:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
(即使它链接到ZF,它应该适用于很多项目)