从htaccess的网址中删除.PHP(Remove .php from urls with hta

2019-08-21 04:15发布

编辑:目前的.htaccess文件:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension snippet

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

我的网站被连接到一个大的托管帐户的域的子文件夹主持。

basesite
  /iioengine
    /forums
      /.htaccess //file works
      /.... //other MyBB content
    /demos.php
    /index.php //iioengine.com (homepage)
    /.htaccess //file doesn't work
    /... //other iioengine php pages

是,我使用两种不同的htaccess文件的问题?

下面是需要工作的链接: http://iioengine.com/demos

我注意到,这是当前htaccess文件破坏所有的论坛网址,以及

这不再起作用: http://iioengine.com/forums/Forum-Box2D

编辑:谢谢你重新开放,我已经取得了一些进展。 这是我目前的htaccess文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
</IfModule>

我仍然得到404页,但如果我把这个行:

RewriteRule . /index.php [L]

所有非 - '。PHP的请求被转发到首页...所以mod_rewrite的肯定是启用,它只是不工作的权利。 任何人都知道这个问题可能是什么?

编辑 :这不是一个重复的 -没有其他的解决方案,为我工作。 我的问题是这样做的解决方案存在 ,它为什么没有他们为我工作 。 没有人能解决这个问题,我一直在尝试了许多解决方案自己。 是不是这个论坛的点才能到具体问题的解决方案?

请允许我澄清...

我已经MyBB的子文件夹运行和重写做工精细。 此链接,例如,工作原理: http://iioengine.com/forums/Forum-Box2D

所有PHP页面不在的MyBB的一部分,仍然有他们的网址php扩展 - 我想删除这些,但没有什么工作。 例如: http://iioengine.com/demos

...... [原帖]

显然有大量的信息在那里这件事,但我几乎尝试了十几个不同的解决方案,并没有得到过去404页。

这里是我的地盘: http://iioengine.com/ ,所有的页面都是PHP,而且比其他网页和所有的论坛网页的一切有一个“.PHP”在其网址的结尾,我想删除。

除了重定向非 - '。PHP的要求,以正确的网页,我也想去掉“.PHP”的一部分,即使它是请求的(因为我的所有内容已经指定了名“.php”部分的超链接)。

这是我迄今为止,大多取自这个职位 ,但它不工作,我得到一个404页。

RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ $1.php [L,QSA]
RewriteCond %{REQUEST_URI} ^/(.*).php$
RewriteRule ^(.*)$ %1 [L,QSA]

什么才是我需要在我htaccess文件删除URL文件扩展名在所有情况下? 谢谢

Answer 1:

尝试隐藏.PHP(将是双向的)这样的代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]

## hide .php extension snippet

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]


Answer 2:

试试这个。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)$ $1.php [L,QSA]
</IfModule>

如果没有,那么你的工作服务器没有mod_rewrite的激活或支持URL重写。



Answer 3:

这是我发现的最简单的语法,这将导致如下:

RewriteEngine on
RewriteRule ^/?PrivacyPolicy$ legal.php?mode=privacy [NC,L]
RewriteRule ^Report/([0-9]+)$ report.php?id=$1 [NC,L] 

结果:

  1. 个人信息保护到legal.php?模式=隐私
  2. 报告/ 55 report.php?ID = 55


Answer 4:

这应该工作

Options -Indexes +FollowSymlinks -MultiViews

RewriteEngine on

DirectoryIndex index.php

# REDIRECT Force requests for named index files to drop the index file filename, and force non-www to avoid redirect loop
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]*/)*index\.(html?|php[45]?)(\?[^\ ]*)?\ HTTP/
RewriteRule ^(([^/]*/)*)index\.(html?|php[45]?)$ http://example.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/([^\.]+)\.php\ HTTP/
RewriteRule ^([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/([^/]+)/([^\.]+)\.php\ HTTP/
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^.]+)\.php$ http://example.com/$1/$2/$3 [R=301,L]

# REDIRECT www to non-wwww
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule .? http://example.com%{REQUEST_URI} [R=301,L]

# REWRITE url to filepath
RewriteRule ^([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2.php [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([^/.]+)$ /$1/$2/$3.php [L]


Answer 5:

在Apache 2.4及更高版本,可以使用带有END标志以下规则来从URL中移除PHP扩展。

RewriteEngine on

RewriteRule ^(.+)\.php$ /$1 [NC,L,R=301]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)/?$ /$1.php [END]


文章来源: Remove .php from urls with htaccess