簡體   English   中英

使用.htaccess從URL刪除PHP文件擴展名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM