[英]How to remove .php extension from URL on server and on localhost with .htaccess file?
[英]Using .htaccess to remove PHP file extension from URL
我剛剛在Ubuntu 12上完成了LAMP堆棧的安裝,並遇到了Apache的.htaccess文件問題。 我啟用了重寫和重定向模塊,並且.htaccess文件正在工作(如果不存在“ www”,則URI將重定向到“ www”),但是無論我如何嘗試,我都無法獲取它來刪除文件擴展名。 我試過<Files>
指令沒有運氣。 我當前的文件包括以下內容:
RewriteEngine On
# Remove file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ $1.php [L]
# Force www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
關於如何解決這個非常煩人的問題的任何建議?
您無需使用htaccess來執行此操作,而是使用應用程序刪除擴展名,並使用htaccess將無擴展名的url映射到實際文件。 這個規則
# Remove file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]
說,“如果所請求的資源不作為文件存在,則尋找具有.php
擴展名的資源”。 因此,您從應用程序中的所有鏈接中刪除了擴展名,此規則將使php文件在沒有擴展名的情況下運行。 您的htaccess很好,您需要更新您的應用程序。
我非常成功地使用了另一個htaccess替代方法:
Options +FollowSymLinks
Options -Indexes
RewriteEngine On
RewriteRule ^purchase-jelly-babies$ /modules/products/jelly_babies.php [L]
RewriteRule ^/lets/use/an/asp/extension.asp$ /modules/test/asp_example.php [L]
這種方法不僅可以解決您的PHP擴展問題,而且還可以使您的文件井井有條,無論這些SEO笨蛋告訴您什么是URL。
# Apache Rewrite Rules
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Add trailing slash to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
RewriteRule ^(.*)$ $1/ [R=301,L]
# Remove .php-extension from url
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php
# End of Apache Rewrite Rules
</IfModule>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php
請嘗試使用此代碼,並告訴我它的性能。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/$ $1.php
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)/$ $1.html
RewriteCond %{REQUEST_FILENAME}.py -f
RewriteRule ^(.*)/$ $1.py
這樣做的方式。
RewriteEngine on
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://domainname.com/$1 [R=301,L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.