2010-07-16 159 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