Php 设置选择性重定向
我正在开发一个模板引擎,其中有一个布局页面和内容页面(.cntnt)。布局页面如下所示:Php 设置选择性重定向,php,html,.htaccess,templates,redirect,Php,Html,.htaccess,Templates,Redirect,我正在开发一个模板引擎,其中有一个布局页面和内容页面(.cntnt)。布局页面如下所示: <div id="body"> <?php include_once(substr($_SERVER['REQUEST_URI'],1) . ".cntnt"); ?> </div> 这个想法非常简单:用户发出一个请求,例如mysite.com/pageone,然后被无声地重定向到布局页面,这里布局页面添加任何模板HTML,并在上面
<div id="body">
<?php
include_once(substr($_SERVER['REQUEST_URI'],1) . ".cntnt");
?>
</div>
这个想法非常简单:用户发出一个请求,例如mysite.com/pageone,然后被无声地重定向到布局页面,这里布局页面添加任何模板HTML,并在上面一行插入所请求的页面(pageone)。我遇到的问题是设置重定向
我正在.htaccess文件中使用以下代码:
RewriteBase /
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !/Layout.php$
RewriteCond %{REQUEST_URI} (\.html|\.php|/)$
RewriteRule $ /Layout.php [L]
</IfModule>
ErrorDocument 404 /404.cntnt
RewriteBase/
重新启动发动机
重写cond%{REQUEST_URI}/Layout.php$
重写cond%{REQUEST\u URI}(\.html\.php\/)$
重写规则$/Layout.php[L]
错误文档404/404.cntnt
这意味着将对php、html和无扩展文件的请求重定向到布局页面,但以其他方式返回原始文件。没有。对.html
或.php
文件的请求返回404响应。例如,您在url栏中输入www.mysite.com/pageone,然后按enter键,您将获得404,但如果您转到布局页面或cntnt页面,它们将加载。我做错了什么
对.html或.php
文件的请求返回404响应。例如,在url栏中输入www.mysite.com/pageone
如果您输入www.mysite.com/pageone
作为URL,则它将不符合以下条件:
RewriteCond %{REQUEST_URI} (\.html|\.php|/)$
它确实会以404的速度增长
您可以使用此规则:
ErrorDocument 404 /404.cntnt
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f [OR]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !^(Layout\.php|.+?\.(?:jpe?g|gif|ico|png|tiff|css|js)$ Layout.php [L,NC]
对.html或.php
文件的请求返回404响应。例如,在url栏中输入www.mysite.com/pageone
如果您输入www.mysite.com/pageone
作为URL,则它将不符合以下条件:
RewriteCond %{REQUEST_URI} (\.html|\.php|/)$
它确实会以404的速度增长
您可以使用此规则:
ErrorDocument 404 /404.cntnt
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f [OR]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !^(Layout\.php|.+?\.(?:jpe?g|gif|ico|png|tiff|css|js)$ Layout.php [L,NC]
您是否尝试过将第二次重写合并到规则本身中
RewriteRule(\.html\.php |/)$/Layout.php[L]
我觉得你的方式很奇怪。@IMSoP是的,我这样做是为了可读性你有没有尝试过将第二次重写合并到规则本身中RewriteRule(\.html\.php |/)$/Layout.php[L]
我觉得你的方式很奇怪。@IMSoP是的,我这样做是为了可读性这就是问题所在,我需要它将/page one、/page one.php和/page one.html重定向到Layout.php,而不是图像和任何其他类型的内容。。这就是问题所在,我需要它重定向/page one,/pageone.php和/pageone.html到layout.php,但不包括图像和任何其他类型的内容。。