2010-01-24 69 views
21

網站運行在我們無法訪問.htaccess文件的網頁主機上。但是,我想爲用戶友好的URL進行URL重寫。在不使用htaccess的情況下使用PHP進行URL重寫

例如原始地址

www.example.com/file?q=name 

預期網址

www.example.com/file/name 
+0

只是舉例 website.user的文章部分提交了一篇文章,並且生成了像www.domain-name/articles?cat = 3&id = 34這樣的動態url,但是我想要這個www。domain-name/articles/cat-name/article-name – Vivart 2010-01-24 11:29:26

回答

16

正如其他人所說,只需使用鏈接如/index.php/nice/looking/url
在URL中間可能看起來有點怪「的index.php」,但我不認爲這是可能有它看起來沒有的.htaccess

都好,你可以問你的主機供應商任何重定向指向/index.php的網址,以便您無需在網址中添加/index.php即可處理網址重寫。

然後,您可以使用正則表達式匹配來檢測包含哪個文件。
preg_match('@[/]{1}([a-zA-Z0-9]+)@', $_SERVER["PATH_INFO"], $matches)($比賽將包含陣列中的全部網址的「部件」)

小心,包括文件,使用白名單所以你一定沒有人能夠加載內部文件。

+0

檢查這個帖子鏈接你的CSS,HTTP://什麼-在線。 info/science-and-tutorials/104/how-to-writing-PHP-SEO-friendly-URLs-without-htaccess /將使用HTACCESS文件巧妙地解決你的URL重寫 – 2017-01-13 08:17:14

4

你最好的選擇將是有網址,像這樣的:

www.example.com/index.php/file/name 

你會來,雖然重寫PHP代碼。

5

爲阿利克斯阿克塞爾建議您可以使用

www.example.com/index.php/file/name 

則可以使用$_SERVER['REQUEST_URI']處理URL。

+0

在這種情況下,最好使用'$ _SERVER ['PATH_INFO']'而不是'$ _SERVER ['REQUEST_URI']'。 – 2010-01-24 11:34:46

+0

此解決方法看起來不錯。一個問題,當我使用www.domain-name.com/index.php/filename它看起來像當前目錄更改 和所有css格式化丟失和相對導航也無法正常工作。 有什麼建議。您的每一個文件的參考 – Vivart 2010-01-24 12:12:17

+1

添加/基本參考像 ''也 使用基本參考'SRC = 「/媒體/ css.css」' – Pentium10 2010-01-24 12:37:56

3

如果你有一個Apache服務器,並且啓用了AcceptPathInfo,那麼你可以使用你寫的URL。如果/file是常規文件,則/file/name的請求將被自動重寫爲/filePATH_INFO/name

0

試試這個

www.example.com/file?q=name

www.example.com/name(優於www.example.com/file/name

從項目的根文件夾打開.htaccess並添加以下代碼

Options +FollowSymLinks 

RewriteEngine On 
RewriteRule \.(js|css|jpe?g|png|gif)$ - [L] 


RewriteRule "^([ \w-]+)/?$" /file?q=$1 [L,QSA] 

這解決了您的問題。看帖子如何rewrite URL in .htaccess