2010-07-16 161 views
0

我想将PHP动态URL变成静态URL。 例如,我要像URL重写 - PHP + Apache

http://www.example.com/book.php?title=twilight网址成为http://www.example.com/book/twilight

http://www.example.com/writer.php?name=meyers成为http://www.example.com/writer/meyers

当它这样做,我会在网站上变化表单验证?

我的URL重写需求可能不会太复杂。

我正在使用XAMPP,Apache和MySql在本地开发它。稍后我会把它放在网上。

我该怎么做? 这种URL重写技术对SEO最有意义吗?

回答

1

是的。你需要使用mod_rewrite。还要搜索.ht_access文件。您可以将您的重写指令放在.ht_access文件中,并将它们放入服务器上您希望它们生效的任何目录中。

对于重写的类型,希望此规则生成应该使用对你:

http://www.generateit.net/mod-rewrite/

而且是你想达到的URL是搜索引擎友好。

+0

通常,该文件被称为'.htaccess',没有下划线,如果你可以在你的apache conf中包含你的mod_rewrite指令,它通常会更高效。 – grossvogel 2010-07-16 22:32:40

+0

我提到.htaccess是因为很多人无法访问httpd.conf。感谢您的更正;) – 2010-07-17 07:30:23

2

你会使用mod_rewrite。如果你在这里搜索一下,你可能会发现很多关于如何创建类似于你想要做的mod_rewrite规则的其他问题。

1

您可以使用.htaccess文件(或更好的apache.conf)转发所有请求与mod_rewrite的到index.php:

Options +FollowSymLinks 
IndexIgnore */* 

<ifmodule mod_rewrite.c> 
RewriteEngine on 

    # if a directory or a file exists, use it directly 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    # otherwise forward it to index.php 
    RewriteRule . index.php 
</ifmodule> 

在那里,你可以使用$_SERVER['REQUEST_URI']解释请求。

+0

“您可以使用$ _SERVER ['REQUEST_URI']来解释请求。”那个怎么样? – rlc 2010-07-17 00:10:45

+0

如果您的请求是'http:// www.example.com/writer/meyers',那么$ _SERVER ['REQUEST_URI']'是'/ writer/meyers'。你可以用正则表达式或简单的分割字符串来解释它:'explode('/',$ _ SERVER ['REQUEST_URI']);'。 – svenwltr 2010-07-17 00:38:35