.htaccess 用重写规则重构网页
我正在尝试重新组织我的网页,这样,我就不用为每个页面设置40个文件,而是使用一个通过重写规则重定向的文件。 在我的目录中,我有如下文件: 1.php 2.php 3.php 关于.php help.php 我试图实现的是,如果文件存在,只需像普通一样交付它(about.php,help.php)。如果它已经不存在了,那么抓取页面并动态加载它.htaccess 用重写规则重构网页,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在尝试重新组织我的网页,这样,我就不用为每个页面设置40个文件,而是使用一个通过重写规则重定向的文件。 在我的目录中,我有如下文件: 1.php 2.php 3.php 关于.php help.php 我试图实现的是,如果文件存在,只需像普通一样交付它(about.php,help.php)。如果它已经不存在了,那么抓取页面并动态加载它 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Rewrit
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /page.php?link=$1 [L]
然后在page.php上,我有:
include($_SERVER['DOCUMENT_ROOT'].'/files/'.$_GET['link'].'.php');
我遇到的问题是,它正在拉动一切。这将导致错误:
include(): Failed opening 'C:/xampp/htdocs/files/1.php.php'
因为它的末尾有double.php。我可以在那里修改文件,但是我所有的新链接都会被破坏,因为它们不再使用扩展名了。
当然,这不可能是“全部扩展名”或“没有扩展名”的情况吗?为什么不检查
$\u GET['link']
是否包含一个
文件,您知道它是一个扩展名为的文件,然后在此基础上分解,只使用第一部分。否则按原样使用
if (strpos($_GET['link'], ".") !== false) {
$parts = explode(".",$_GET['link']);
$link = $parts[0];
}else{
$link = $_GET['link'];
}
include($_SERVER['DOCUMENT_ROOT'].'/files/'.$link.'.php');