我的网站有一个库/目录路径,如:
{根} /页/ {文件} .PHP
我的index.php路径如下:{root} /index.php
我想,当人们去(例如)'login.php'(存在于/ pages目录中时,url不包含'/ pages'。
所以:
www.website.com/pages/dashboard.php
重定向到
wwww.website.com/dashboard.php
当人们访问www.website.com/dashboard.php时,他们可以访问此页面。
对不好的解释,找不到好的话。
编辑:现在是我的.htacces
RewriteEngine on
# Rewrite automatic to /index.
RewriteCond %{REQUEST_URI} ^/$
# Second check for if above doesn't do the job [www/https].
RewriteCond %{REQUEST_URI} !^/index [NC]
RewriteRule ^$ /index [R=301,L]
# Delete all the .php and .html extensions from files [url-related].
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
# Prevent people for looking inside the .htacces file.
<Files .htaccess>
order allow,deny
deny from all
</Files>
我确实试过这个: RewriteRule ^ /?pages /(.*)$ / $ 1 [R = 301,L]
(这确实重定向了我,但仍然收到了404错误。
答案 0 :(得分:0)
我怀疑你只能用.htaccess做到这一点。 (编辑:你可以,见下面的“编辑”)
你想要的是PRETEND,login.php在根目录中,但实际上并非如此。
编辑:我想我把它搞混了。你只能用.htaccess文件来做。但我不推荐它。您必须每手添加所有重定向(或为不同的情况开发表达式) 相反,我建议使用以下技术。它基本上是一个自制的内容管理系统的开始,用户可以自己创建页面并命名通向此页面的URL。此外,这一切都可以扩展到支持ajax的网站,以确保最新!
如果您对控制器技术的命名优势不感兴趣,请替换.htaccess文件中的代码,并解决登录页面问题。
RewriteEngine on
#catch www.example.com/login.php and redirect without user's conciousness to www.example.com/pages/login.php
RewriteRule ^(login.php)$ http://www.example.com/pages/login.php [NC,L,QSA]
# Prevent people from looking inside the .htacces file.
<Files .htaccess>
order allow,deny
deny from all
</Files>
如果您想获得更多(实际上是有用的)知识并希望学习如何启动具有指定优势的CMS的通用技术,请继续阅读!
当用户调用URL“www.example.com/login”时,将加载登录页面(“login.php”)。
根目录中需要.htaccess文件 你需要在根目录中有一个“控制器”(我建议使用index.php) 你需要在某个地方使用内容页面,在本例中是root / pages中名为“login.php”的文件 Htaccess会将所有URL重定向到此控制器,同时它也会传递用户最初调用的URL。根据传递的URL,控制器决定加载哪个页面内容。在我们的例子中,它将是login.php。
路径:root / index.php
<?php
function callPage($data) {
if (isset($data['path'])) {
// get the correct file for the given path
switch ($data['path']) {
case "login":
include("/pages/login.php");
break;
default:
// show 404 error if given path is unknown
include("/pages/error.php");
}
}
}
?>
<html>
<head></head>
<body>
<div id="page"><?php callPage($_GET); ?><!-- load called page's content --></div>
</body>
</html>
路径:root / pages / login.php
<p>I am a happy login page. See, that I don't need any HTML Tags, a body or a head, because I am meant to be used only when mother index.php calls me up and integrates me. Life's so easy!</p>
<p>And do you know what's the best? I can even run PHP inside myself! Awesome, isn't it?</p>
路径:root / .htaccess
RewriteEngine on
#if called file or directory reallyexists, don't redirect (might lead into a loop)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#redirect every URL (that does not really exist) to index.php
#the URL the user called can be accessed in index.php in $_GET['path']
RewriteRule ^(.*)$ http://www.exampe.com/index.php?path=$1 [NC,L,QSA]
# Prevent people from looking inside the .htacces file.
<Files .htaccess>
order allow,deny
deny from all
</Files>
这当然是一个非常基本的例子。目前,使用这种技术而不是.htaccess文件中的简单重定向没有优势,而只是缺点。但现在你可以自己来加强它。一些可能性:
最后,这会导致一个小型系统,可以扩展到自己的CMS