Ubuntu 14.04LTS32ビット
ランプ
私はそれが古い質問であることを知っていますが..
表示されているURLから.phpが見つかった場合は、それを削除する必要があります。 /showthread.php?id=XX --->/showthread?id = XXで動作する必要があります
/page.php
-> /page
で動作させることすらできません。私はこれらを試しました:
Apache mod_rewriteで.html拡張子を非表示にする方法
何もしません。他の.htaccess
コードは正常に機能しますが。
一方
<?php
phpinfo();
ロードされたモジュールのmod_rewriteを一覧表示します
そして
<?php
if(!function_exists('Apache_get_modules') ){ phpinfo(); exit; }
$res = 'Module Unavailable';
if(in_array('mod_rewrite',Apache_get_modules()))
$res = 'Module Available';
?>
<html>
<head>
<body>
<p><?php echo Apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>
Module Available
を返します
もっとたくさん試してみました
# 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>
#
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
#
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
これでさえ何の効果もありません:
RewriteRule ^page$ page.php [L]
Sudo service Apache2 restart
は何も変更しません。
サーバーを再起動しても何も変わりません。
内部の他のコードをクリアしようとしましたが、変更はありませんでした。
ブラウザのキャッシュを100回クリアしました
私はそれが私を憎んでいるだけだと思い始めています。何が原因でしょうか?
助けてくれることを願っています。
それは私のために働いた。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# For LocalHost !.php
RewriteCond %{HTTP_Host} !=localhost
RewriteCond %{HTTP_Host} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=::1
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
チェック このリンク 。
これは.htaccessを使用した答えです:
RewriteEngine On
# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]
# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]
WAMPを使用してWindowsでテストし、動作しています。
これを試して、ファイルから.php拡張子を完全に削除し、無限ループを回避してください。
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]
このコードはRoot/.htaccessで機能します。これをサブディレクトリのhtaccessファイルに配置する場合は、必ずRewriteBaseを変更してください。
RewriteEngine on //replacement launch
RewriteCond %{REQUEST_FILENAME} !-d //If the requested object is not a folder
RewriteCond %{REQUEST_FILENAME}\.php -f //If the requested object to append the extension php - file
RewriteRule ^(.*)$ $1.php //make the change from concatenating .php
以下を試すことができます。
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php$2 [L]
.htaccessが処理されていると仮定すると、この非常に単純な.htaccessが機能するはずです。
RewriteEngine on
RewriteRule (.*) $1.php [END]
それが機能しない場合は、Apacheの構成に問題があります。最初にそれを調べる必要があります。
動作する場合は、RewriteRuleの前に次の行を追加して、他のファイルを提供できるようにします。
RewriteCond %{REQUEST_FILENAME} !-f
ENDフラグは、Apache2.3.9以降で使用できます。
私のApache設定で mod_negotiation を有効にすると、私のためにトリックが行われました:
コンテンツネゴシエーション、より正確にはコンテンツの選択は、利用可能ないくつかのドキュメントの1つから、クライアントの機能に最も一致するドキュメントを選択することです。
動作しています。このコードを試すことができます。
1。最初にメインディレクトリに.htaccess
ファイルを作成し、その後同じコードを貼り付けて、履歴とその動作をクリアします。
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
わたしにはできる:
#On rewrite
RewriteEngine On
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# rewrite domain.com/username.php to username
RewriteRule ^([A-Za-z0-9_-]+)/?$ $1.php [NC,L]
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ $1/$2.php [NC,L]
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ $1/$2/$3.php [NC,L]
その他:fbのようなソーシャルポータル用の私の書き換えファイルを見てください:
# allow only from ip range /8 /16 /24 /31
#Order deny,allow
#Deny from all
#Allow from 89.230.0.0/16
# On rewrite
RewriteEngine On
# [NC]- case-insensitive
# [L] - Last Rule , stop the rewriting process here
# [OR] = Or - If it matches this condition or the next
# [QSA] - Append query string to rewriting url
# [R] - redirect [R=301] move permanently, 302 - temporarily, 403 - Forbidden, 404 - Not Found, 410 - Gone
# fix folder redirect images and css js/images/css/media
RewriteRule ^.+?/((img|css|js|media|upload|posts)/.+)$ /$1 [L,R=301,NC]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# does not work on IIS windows server url rewrite when importing
# RewriteCond %[REQUEST_FILENAME] !-l
# rewrite example.xx/index.php na example.xx/
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index\.(php|html?)$ / [R=301,NC,L]
#portfolio rewrite folder rewrite
# RewriteRule ^([portfolio]+)/?$ /portfolio/index.php?id=$1 [NC,L]
# pretty url example.xx/id/post/number
# rewrite domain.com/username like Twitter or facebook users
RewriteRule ^([A-za-z0-9_-]+)/?$ index.php?username=$1 [NC,L]
# domain.com/post/name
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ profil.php?id=$1&menu=$2 [NC,L]
# domain.com/cat/post/id
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([0-9]+)/?$ profil.php?id=$1&menu=$2&page=$3 [NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(ustawienia)/?$ ustawienia.php?id=$1&menu=$2 [NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(wpisy)/?$ profil0.php?id=$1&menu=$2 [QSA,NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(fani)/?$ profil1.php?id=$1&menu=$2 [QSA,NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(ogladasz)/?$ profil2.php?id=$1&menu=$2 [QSA,NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(zdjecia)/?$ profil3.php?id=$1&menu=$2 [QSA,NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(video)/?$ profil4.php?id=$1&menu=$2 [QSA,NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(ulubione)/?$ profil5.php?id=$1&menu=$2 [QSA,NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/(wiadomosci)/?$ profil6.php?id=$1&menu=$2 [QSA,NC,L]
#RewriteRule ^([A-za-z0-9_-]+)/?$ profil.php?id=$1 [NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/?$ profil.php?id=$1&menu=$2 [NC,L]
#RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)/?$ index.php?id=$1&dir=$2&post=$3 [NC,L]
# Redirect all subdomains
# RewriteCond %{HTTP_Host} ^(.*)\.breakermind\.com
# RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
# Redirect all subdomains
# RewriteCond %{HTTP_Host} ^www.ns2.breakermind.com [NC]
# RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
# RewriteCond %{HTTP_Host} ^ns2.breakermind.com [NC]
# RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
# Redirect from www. to non-www (unhash if need)
# RewriteCond %{HTTP_Host} ^www.breakermind.com [NC]
# RewriteRule ^(.*)$ http://breakermind.com/$1 [R=301,QSA,NC,L]
# Redirect from http:// to https:// (from no-ssl to ssl)
#RewriteCond %{SERVER_PORT} 80
#RewriteRule ^(.*)$ https://breakermind.com/$1 [R=301,QSA,NC,L]
ErrorDocument 400 /er404.html
ErrorDocument 401 /er404.html
ErrorDocument 402 /er404.html
ErrorDocument 403 /er403.html
ErrorDocument 404 /er404.html
ErrorDocument 500 /er404.html
ErrorDocument 502 /er404.html
ErrorDocument 504 /er404.html
#RewriteEngin On
#RewriteCond %[REQUEST_FILENAME] !-d
#RewriteCond %[REQUEST_FILENAME] !-f
#RewriteCond %[REQUEST_FILENAME] !-l
#RewriteRule ^(.+)$ index.php?c=$1 [QSA,L]
#
# \w = [A-Za-z0-9_] \d = [0-9]
そしてここに私のブログシステムから:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index\.(php|html?)$ / [R=301,NC,L]
# category
RewriteRule ^category/?$ index.php?id=0&page=0 [NC,L]
RewriteRule ^category/([A-Za-z0-9]+)/?$ index.php?id=$1&page=0 [NC,L]
RewriteRule ^category/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?id=$1&page=$2 [NC,L]
RewriteRule ^category/([A-Za-z0-9]+)/([0-9]+)/([A-Za-z0-9]+)/?$ index.php?id=$1&page=$2&title=$3 [NC,L]
# autor
RewriteRule ^autor/?$ index.php?id=0&page=0 [NC,L]
RewriteRule ^autor/([A-Za-z0-9]+)/?$ index.php?id=$1&page=0 [NC,L]
RewriteRule ^autor/([A-Za-z0-9]+)/([0-9]+)/?$ index.php?id=$1&page=$2 [NC,L]
# article, gallery, tags
RewriteRule ^article/([A-Za-z0-9]+)/?$ article.php?id=$1 [NC,L]
RewriteRule ^gallery/([A-Za-z0-9]+)/?$ gallery.php?id=$1 [NC,L]
RewriteRule ^tags/([A-Za-z0-9]+)/?$ tags.php?id=$1 [NC,L]
RewriteRule ^archive/([0-9]+)/([0-9]+)/?$ archive.php?year=$1&month=$2 [NC,L]
# custom page rewrite
RewriteRule ^page/([A-Za-z0-9]+)/?$ page.php?id=$1 [NC,L]
# fix folder redirect images and css js/images/css/media
RewriteRule ^.+?/((admin|img|css|js|media|upload|posts)/.+)$ /blog/$1 [L,R=301,NC]
# user or category user.php
# RewriteRule ^([A-Za-z0-9]+)/?$ index.php?user=$1 [NC,L]
# example
# RewriteRule ^([folder])/([category])/([A-Za-z0-9]+)/?$ index.php?id=$3&cat=$2 [NC,L]
あなたは正しい方向に進んでいるかもしれません。ただし、.htaccessファイルが実行されていないようです。モジュールがアクティブ化されたからといって、特定の状況で使用できるとは限りません。
問題を解決するためのいくつかの手順があります:
AllowOverride all
に変更してください。これらのいずれかで修正する必要があります。エラーが発生した場所を特定できるように、各ステップ間で試すことをお勧めします。原因を特定した後、必要に応じて、戻ってこれらのAllowOverridesの一部を制限することをお勧めします。
頑張ってください!