删除 index,index.php 错误句柄,尾随斜杠 PHP Htaccess

我的 Htaccess 代码需要一些帮助。

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
RewriteRule (.*)\.php$ $1 [R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L,QSA]

我的目录结构是:

公共_HTML

  css/style.css
   img/icon.png
   /2/user.php
  index.php
  create.php

现在上面的 htaccess 代码正在从 URL 中删除 .php 扩展名。

例子

 -> example.com/index.php -> example.com/index
 -> example.com/2/user.php -> example.com/2/user

此 Htaccess 文件的问题

  1. 我也想隐藏索引示例:example.com/index -> example.com

  2. 如果用户输入 example.com/index.php 那么他应该被重定向到 example.com

  3. 如果用户输入不存在的东西,那么它应该指向example.com

    例子: example.com///*/// -> example.com

  4. 当它删除 .php 扩展名时,应该在末尾添加一个斜杠。

例子: example.com/create.php -> example.com/create/

  1. 如果用户想访问 create.php 并/create without /在最后输入,那么它应该被自动添加。

    例子: example.com/create -> example.com/create/

换句话说,如果在删除 .php 之后,它们的工作方式相同

**Example:** example.com/create = example.com/create/
  1. 但是用户应该仍然能够访问该目录

    例子: example.com/2 -> example.com/2/

    这里2是一个文件夹。

我对这个 htaccess 脚本有一些问题。我在 Google 和 Stack Overflow 上搜索了很多,但仍然找不到任何解决方案。

*这不是一个重复的问题。在将其标记为重复之前,请仔细检查。如果你能帮助我,我会很高兴。

流行先生

这里有你需要的一切,所有问题都用代码、信息和示例回答!逐一提供每个人所做的事情,然后是整个代码!


1-) 解析 .php 扩展名

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

example.com/user.php 如果你去,将会工作 example.com/user


2-)将不存在的错误链接重定向到 example.com

如果用户键入不存在的链接,例如 ,example.com///*用户将被自动重定向到example.com

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

3-)重定向 example.com/index.php example.com/index example.com

RewriteCond %{THE_REQUEST} /index(\.php)?[/?\s] [NC]
RewriteRule ^(.*?)index(?:\.php)?$ /$1 [L,R=301,NC,NE]

4-) 如果不是目录,则删除尾部斜杠,否则添加

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

如果在普通文件后添加了尾部斜杠,这将删除它。如果它是一个目录并且具有,它将保留。如果没有,则会自动添加一个尾部斜杠。

您将能够访问目录!


5-) 从 URL 中删除 .php(重定向到没有 .php 的文件名)

RewriteCond %{THE_REQUEST} \.(php|cfm)[\s?] [NC]
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)\.(cfm|php)$ /$1 [R=301,L,NE]

.htaccess 的整个代码

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=301,L]

RewriteCond %{THE_REQUEST} /index(\.php)?[/?\s] [NC]
RewriteRule ^(.*?)index(?:\.php)?$ /$1 [L,R=301,NC,NE]

RewriteCond %{THE_REQUEST} \.(php|cfm)[\s?] [NC]
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)\.(cfm|php)$ /$1 [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

我希望这对你有帮助。

乐于助人,乐在其中!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

5 .htaccess重写:强制HTTPS,删除index.php,删除.php,强制www,强制尾随斜杠

htaccess强制www,删除“ index.php”,创建干净的url并添加尾随反斜杠

重定向到index.php并删除斜杠.htaccess

如何使用 htaccess 删除 index.php

htaccess强制www并删除index.php

如何使用.htaccess删除index.php

使用htaccess删除index.php

.htaccess停止删除index.php

如何删除“ index.php”?来自HTACCESS

使用.htaccess文件从CodeIgniter中的URL中删除index.php,仍然出现错误“找不到index.php”

.htaccess删除.php并添加斜杠

.htaccess从网址中删除index.php并隐藏参数键

htaccess-添加www并删除index.php

.htaccess删除www和index.php并强制使用https

在我的CodeIgniter项目中激活.htaccess(删除“ index.php”)

CodeIgniter .htaccess在服务器上删除index.php

使用htaccess从codeigniter中的URL中删除index.php

.htaccess - 删除 index.php,使用多个参数重定向

htaccess中删除index.php?来自URL

.htaccess无法删除此文件:index.php?

使用 htaccess 从 URL 中删除 index.php/

如何配置 htaccess 以删除 index.php 并在错误 404 时重定向

PHP Codeigniter Htaccess。删除控制器名称和index.php并重写url

Oxwall htaccess删除松散的php文件上的扩展名,并忽略index.php重写

htaccess句柄从index.php重定向到index.html

删除index.php codeigniter

htaccess - 删除 index.php 并保留一个没有键的变量

使用您自己的本地域时,使用.htaccess文件在CodeIgniter中删除index.php

htaccess应该从当前URL中删除index.php,而是重定向到root