2012-08-17 103 views
2

我在Wordpress中见过,当你创建一个页面时会说“注册”,它指向http://example.com/register/,但是根目录下根本没有一个名为register的文件夹。这是如何完成的?如何将URL指向页面?

它是这样的。当用户点击注册表http://example.com/index.php上的链接时,它会将用户带到新页面,并且浏览器中的URL将为http://example.com/register/,并加载页面。 register文件夹本身不存在。

从下面笔者了解到,该请求被通过修改.htaccess

我想知道在index.php放置什么代码,以便http://example.com/register/会显示注册页面通过index.php文件传递的答案。

+2

上的一些好材料,参见['mod_rewrite'](http://httpd.apache。组织/文档/电流/ MOD/mod_rewrite.html)。 – 2012-08-17 16:31:55

+1

在.htaccess中使用mod_rewrite创建一个像www.domain.com/index.php?page=register – Waygood 2012-08-17 16:32:08

回答

2

在我的WordPress的.htaccess文件我有:

RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 

如果URL中的“文件名”部分不作为文件!-f存在或存在的目录!-d然后重写请求这基本上说内部为/index.php,强制请求由Wordpress的index.php处理。

好了,根据您的补充意见,以下.htaccess规则将采取http://domain.com/<anything>和内部将其改写为http://domain.com/index.php?page=<anything>,这将不区分大小写(NC标志)来完成,并会不断(预挂起)任何现有的查询字符串(QSA标志)。这只适用于服务器上不存在的文件名和目录。

RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /index.php?page=$1 [NC,QSA,L] 

这确实有以下副作用,你应该能够编程方式处理,http://domain.com/register/将被改写为http://domain.com/index.php?page=register/其中包括“/”结尾,因为这是一个目录参考。同样,你应该能够在你的PHP代码中处理它。

+0

这样的网址ok我修改了.htaccess。请你能给我一些提示什么或怎样使用/注册/从URL来处理n显示结果? – 2012-08-17 16:41:52

+0

你是说你想将字符串“register”作为查询字符串的一部分传递给index.php,比如'/index.php?u = register'? – HeatfanJohn 2012-08-17 17:03:03

+0

我的意思是说,我希望字符串“注册”在像$页面这样的变量中,这样我就可以给出一个条件。如果($ page ==“register”){}我想我必须读取当前的url。那会正确吗? – 2012-08-17 17:06:05

0

WordPress使用了mod_rewrite在.htaccess文件如下:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

哪些航线的所有页面请求通过的index.php如果文件或目录不存在和脚本没有的index.php

1

在这种情况下,当Apache服务器尝试打开请求的文件路径/register/时,它首先查看.htaccess文件。

.htaccess文件可以将请求重定向到另一个路径。

通常发生的是所有请求重定向到单个文件,index.php在WordPress,它读取原始请求,/register/,并提供了正确的HTML。

什么的WordPress做就可以提供正确的HTML是另一个问题完全,但你可以从这里开始:https://www.google.com/search?q=how+wordpress+works

+0

好的。我有个问题。如果在根目录中存在一个名为'about.php'的文件,并且如果我访问http://domain.com/about.php,这个请求是否也会被重定向到'index.php'?或只为那些导致错误的人? – 2012-08-17 17:09:05

+0

@NeilMartin它取决于你如何在'.htaccess'文件中设置重定向。请参阅@ HeatfanJohn的答案。 – iambriansreed 2012-08-17 17:24:07

0

尼尔·马丁,这实在不是一个简单的问题。你最好阅读URL REWRITING

+0

是的。我曾尝试阅读关于'.htaccess'文件。我读了几个教程。我没有找到答案。我有方法重定向,拒绝文件夹访问等,但不是一个说到这一点的方法。 – 2012-08-17 17:11:59

相关问题