2015-10-08 27 views
-1

使用堆棧溢出作爲案例研究,將其放入URL http://stackoverflow.com/questions/32670861,它會在加載時將URL更改爲http://stackoverflow.com/questions/32670861/parsing-arguments-dynamically-into-a-method-in-php將定製標題添加到定製框架中的URL

我該如何實現該功能?

我正在使用定製的框架。

這裏是.htaccess規則

RewriteEngine on 
RewriteRule ^$ public/ [L]  
RewriteRule (.*) public/$1 [L] 

在公共目錄中,我有這樣的'的.htaccess規則

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] 

這是我用來捕獲輸入網址在我的引導類路由。

我該如何用這種框架實現上述功能。這個路由效果是否仍然會使它工作,因爲我已經嘗試了public/目錄中的一些重寫規則,但它似乎對URL沒有任何影響(我猜這是因爲它是一個框架的權利)

這裏是我試過的一些規則

#RewriteCond %{REQUEST_URI} ^[0-9a-zA-Z-]$ [NC] 
#RewriteRule ^/[0-9A-Za-z-]$ %{REQUEST_URI}/?title=$1 [R=301,L] 

#RewriteCond %{REQUEST_URI} /+[^\.]+$ 
#RewriteRule ^(.+[^/])$ %{REQUEST_URI}/$1 [R=301,L] 

沒有接近工作。

編輯:我的問題與其國旗無關。我不是在談論漂亮的鏈接。這個框架已經提供了,但就像上面描述的堆棧溢出場景一樣,如果我去www.example.com/news/1它應該重定向到www.example.com/news/1/title-of-the-new(可能;我不知道堆棧溢出是如何實現的)。

+0

我懷疑這是一個重複的先生!我的問題與此完全不同。 – Prodigy

+0

當我卡住時問問題是否是犯罪行爲?我知道什麼mod_rewrite不能看到你放在那裏的鏈接。至少stackoverflow使用我要求的幫助功能,所以我仍然沒有看到該職位與我所問的相關性。 – Prodigy

+0

我需要清楚理解stackoverflow是如何做的,看看我是否可以做同樣的事情(在我自定義的框架中)。 – Prodigy

回答

1

使用stackoverflow的例子,你的php路由控制器需要把URL的ID部分和查找最後的標題部分。

然後,您必須執行header('Location:'. $fullUrl);重定向。

如果您在此頁面上刪除了url的標題部分,您可以在瀏覽器開發工具網絡中看到301重定向完成以獲取完整的url。

+1

我會爲OP添加一個'header()'重定向的常見錯誤,之後不會添加'exit()' - 只要您發出重定向,關閉應用程序。 – halfer

+0

@halfer你想說這是怎麼回事? 'header('Location:'。$ fullUrl)';出口(); – Prodigy

+0

@Prodigy是的,當然還有你通常會做的任何關閉應用程序。重點不是輸出任何HTML或運行任何其他控制器操作,因爲它可能會導致難以調試的競爭條件。 – halfer