用php和.htaccess漂亮的网址

问题描述:

请对我轻松一点,因为这是一个全新的世界。用php和.htaccess漂亮的网址

所以我建立和Little CMS和使用GET来控制url.I中的PageId或页面永久使用该脚本工作正常时,只有经过1个变量通过查询字符串

例如我的htaccess:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?p=$1 
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?p=$1 

然后,我可以通过我的索引文件中控制的id或permalink调用我的页面。我无法弄清楚的一件事是如何在URL中包含父级永久链接以及调用子页面时。

另一个例子。如果我把一个网页,是父母的孩子:

http://site.com/index.php?p=post-title 

如果标题后是父称号的子女;我如何使用网址

http://site.com/parent-title/post-title? 
+0

您是否在讨论某人在请求“http:// site.com/parent-title/post-title”时的请求像'/index.php?p = post-title&parent = parent-title'那样重写到你的index.php控制器中? – 2012-04-26 21:47:08

+0

我想到了,但我想知道是否有一种方法来自动包括父标题时,只调用后标题 我相信有一种方法,但mod_rewrites都是英语对我来说。 但要回答你的问题。是的,我喜欢你的建议,但仍然保持清洁的地址 – 2012-04-26 21:49:34

+0

所以你的意思是:'/index.php?p =父标题/标题后'? – 2012-04-26 21:50:26

首先,我们可以将所有代码放在Apache .htaccess文件中。这可能看起来像这样:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^users/(\d+)*$ ./profile.php?id=$1 
RewriteRule ^threads/(\d+)*$ ./thread.php?id=$1 
RewriteRule ^search/(.*)$ ./search.php?query=$1 

让我们从顶部开始,继续努力,以更好地理解这里发生的事情。第一行将环境设置为使用Options指令遵循符号链接。这可能也可能不是必需的,但是一些网络主机使用符号链接(类似于MacOSX中的别名或快捷方式是Windows)来处理常见的HTTP请求错误,这些错误通常是符号链接文件,或者至少这是我理解推理的方式。接下来我们告诉Apache我们将使用重写引擎。接下来的两行非常非常重要,它限制了仅将URL重写为实际不存在的路径。这可以防止下面的例子匹配example.com/images/logo.png的规则。第一个使用!-d标志防止现有目录,第二个使用!-f意味着忽略现有文件。 接下来的三行是实际的URL重写命令。每一行都会创建一条规则,试图将正则表达式模式与传入的URL进行匹配