Ubuntu 14.04LTS 32bit
灯
我知道这是一个老问题,但..
我需要它从可见网址中找到它的任何地方删除.php。
它需要使用/showthread.php?id=XX ---> / showthread?id = XX
我甚至无法使用它 /page.php
- > /page
。
我试过这些:
使用.htaccess删除.php扩展名
如何使用Apache mod_rewrite隐藏.html扩展名
使用htaccess从URL中删除.php
如何停止.htaccess循环
它什么都不做。
其他 .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]
在Windows上使用WAMP进行测试并正常工作。
尝试这样从您的文件中完全删除.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。
你可能走在正确的轨道上。但是,听起来你的.htaccess文件没有被执行。仅仅因为模块被激活,并不意味着它在您的特定情况下可用。
以下是解决问题的一些步骤:
- 首先,检查拼写 很小心。验证拼写是否正确(包括开头的。)
- 检查文件权限。某些服务器将需要可执行权限。所以chmod文件到755。
- 如果你仍然没有它工作,请进入你的apache配置(可能在Ubuntu上的/etc/apache2/apache2.conf)并找到AllowOverride的每个实例。它可能设置为“无”。将此更改为
AllowOverride all
代替。
- 然后进入已启用站点的站点,找到您的站点配置,并更改AllowOverride字段。
- 重新启动Apache服务器并用一大杯咖啡祝贺自己。
其中一个应该解决它。我建议在每个步骤之间尝试,以便您可以确定错误发生的位置。确定原因后,您可能需要返回并限制其中一些AllowOverrides,具体取决于您的需求。
祝你好运!
您可以尝试以下方法。
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php$2 [L]
这个对我有用:
#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,那么这个超级简单的.htaccess应该适合你:
RewriteEngine on
RewriteRule (.*) $1.php [END]
如果它不起作用,则Apache配置有问题。
你需要首先考虑一下。
如果可行,请在RewriteRule之前添加以下行以允许提供其他文件:
RewriteCond %{REQUEST_FILENAME} !-f
从Apache 2.3.9开始,END标志可用。
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
启用 mod_negotiation模块 在我的Apache配置中为我做了诀窍:
内容协商,或者更准确地说是内容选择,是从几个可用文档中选择一个与客户端功能最匹配的文档。