回答
在Web根目錄下創建.htaccess文件,並輸入以下有:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^product/([0-9]+)$ product.php?id=$1
使用product.php的策略是什麼?id = 777&storage = usa – Tuco 2011-04-08 00:42:29
這樣只會達到9,因爲它沒有量詞?^product /([0-9] +)$ product.php?id = $ 1 – 2011-04-08 00:47:40
RewriteRule^product /([0-9] +)/ storage /(.*)$ product.php?id = $ 1&storage = $ 2 – 2011-04-08 00:49:33
這事做與URL重寫,這是你的東西設置通常與mod_rewrite的模塊中的Apache
而是使用mod_rewrite你也可以用在你的.htaccess以下內容:
DefaultType application/x-httpd-php
而只是在服務器上命名您的腳本product
(不帶.php文件擴展名)。
這樣你就可以直接調用,並會接受任何附加的字符串作爲$_SERVER["PATH_INFO"]
雖然這樣做有一些重要的安全隱患,特別是如果應用程序允許用戶上傳。如果惡意用戶可以上傳一個文件並用一個擴展名來命名,而這個擴展名並沒有被明確指示爲PHP以外的東西,那麼他將能夠在服務器上執行PHP代碼。 – 2011-04-08 03:12:39
確實。我希望安全後果是顯而易見的。但以防萬一:該設置需要在不需要的子目錄中重置。特別是在世界可寫的領域。 (無論如何,哪個OTOH不應低於webroot) – mario 2011-04-08 03:16:17
這是一件框架,如笨和正如其他人所建議的,Zend可以輕鬆實現,但仍然可以通過Apache的mod_rewrite
完成。基本上,通過.htaccess像這樣所有流量引導到一個頁面:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L]
</IfModule>
一旦你在該網頁上,你可以分析_url
變量,它可以是任何你想要的格式,並適當地處理請求。
不會CodeIgniter/Zend/Symfony /等。所有需要利用mod_rewrite來完成OP正在尋找的內容? – 2011-04-08 14:15:52
是的,我的意思是,如果你只是使用'mod_rewrite',你必須自己完成所有路由,但是默認情況下,所有的路由都具有這種路由,所以你只需啓用'mod_rewrite'即可。 – 2011-04-08 14:27:03
好點。感謝澄清。 – 2011-04-08 14:44:08
對於我這個代碼的工作:
在 「 的/ etc/apache2的/網站可用/默認」 或 「 的httpd.conf」你必須有(至少)這些選項
在默認目錄
...
<Directory />
...
Options FollowSymLinks
AllowOverride All
...
</Directory>
...
或網站特定站點目錄
...
<Directory "/var/www/my-site">
...
Options FollowSymLinks
AllowOverride All
...
</Directory>
...
並創建(它可能不存在,請確保它可以被apache讀取)或編輯站點目錄中的「.htaccess」(例如「/var/www/my-site/.htaccess 「),並添加以下代碼:使用下面的執行文件名爲多年
AddType application/x-httpd-php htm html php
AddHandler application/x-httpd-php .htm .html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
如果uri是/hello.world,這個傳奇將會失敗 – Jacques 2018-01-07 06:03:53
我這樣做是‘支持’(NOT Support.php,我不想兩種方式來訪問該文件)。
<Files Support>
SetHandler php-script
</Files>
不過,我已經開始使用的Plesk作爲PHP 7.0執行腳本運行時與這個麻煩。根(.com/index.php)將以PHP 7運行,但我的任何php-script文件(.com/Support)都將作爲我的Plesk默認PHP 5.4版本運行。我還沒弄清楚爲什麼會這樣做,但它確實解決了設置默認處理程序的問題。
- 1. 如何執行沒有.php擴展名的php重定向?
- 2. JQuery沒有在擴展中執行PHP
- 3. 如何讓網頁沒有.html,.php或.asp擴展名?
- 4. WordPress頁面沒有.php擴展名
- 5. PHP查找擴展沒有擴展名
- 6. URL網頁名稱,沒有PHP的ID
- 7. 如何隱藏URL的.php擴展名?
- 8. 沒有.php擴展名的PHP URL格式?
- 9. PHP如何執行其他文件擴展名到PHP?
- 10. 在url中隱藏擴展名.php mod_rewrite
- 11. PHP在沒有文件擴展名
- 12. 如何在我的網頁上啓用.php擴展名?
- 13. 沒有文件擴展名的網頁
- 14. 所有網頁文件的PHP擴展?
- 15. 如何在url中隱藏php擴展?
- 16. 從URL中刪除擴展名爲.php只有1頁
- 17. php如何在cakephp中執行帶有擴展名.ctp的文件?
- 18. 隱藏地址欄中的.php擴展名也會打開一個沒有.php擴展名的頁面
- 19. php線程執行擴展
- 20. 如何更改.php網站頁面的擴展名?
- 21. 從URL中刪除.php擴展名(.htaccess)
- 22. 如何在php中提取擴展名
- 23. 加載php頁面.php擴展名
- 24. php + xml wuthout沒有擴展名
- 25. PHP,獲取文件名沒有擴展
- 26. 如何執行.html擴展名的php文件?
- 27. 如何執行jpg或其他擴展名,如php
- 28. 在PHP中命名沒有擴展名的文件,如何將擴展名添加到文件中?
- 29. 重定向.PHP網址到URL沒有擴展
- 30. 刪除擴展名爲.php的URL
Apache或IIS? – Ben 2011-04-08 00:34:00
Apach | - | - | - | - | – Tuco 2011-04-08 00:44:09