5

Ubuntu 12 に LAMP スタックのインストールを完了したところ、Apache の .htaccess ファイルで問題が発生しました。書き換えとリダイレクトの mod を有効にして、.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]

この非常に厄介な問題を解決する方法について何か提案はありますか?

4

6 に答える 6

3

これを行うには htaccess を使用せず、アプリを使用して拡張子を削除し、htaccess を使用して拡張子のない URL を実際のファイルにマップします。このルール

# Remove file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) $1.php [L]

「要求されたリソースがファイルとして存在しない場合は、.php拡張子を持つリソースを探してください」と言います。したがって、アプリ内のすべてのリンクから拡張子を削除すると、このルールにより、拡張子なしで php ファイルが実行されます。htaccess はそのままで問題ありません。アプリを更新する必要があります。

于 2012-11-24T10:35:21.003 に答える
2
# 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>
于 2012-11-24T10:36:42.030 に答える
2

私が非常にうまく使用している別の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 をどうすべきか教えても、ファイルを整理しておくことができます。

于 2013-07-02T14:20:50.473 に答える
0

このコードを試して、パフォーマンスを教えてください。

  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
于 2015-06-02T07:58:54.187 に答える
0
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)/$ $1.php 
于 2012-11-24T10:48:36.127 に答える