我的 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 文件的问题
我也想隐藏索引示例:example.com/index -> example.com
如果用户输入 example.com/index.php 那么他应该被重定向到 example.com
如果用户输入不存在的东西,那么它应该指向example.com
例子: example.com///*/// -> example.com
当它删除 .php 扩展名时,应该在末尾添加一个斜杠。
例子: example.com/create.php -> example.com/create/
如果用户想访问 create.php 并/create without /
在最后输入,那么它应该被自动添加。
例子: example.com/create -> example.com/create/
换句话说,如果在删除 .php 之后,它们的工作方式相同
**Example:** example.com/create = example.com/create/
但是用户应该仍然能够访问该目录
例子: 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] 删除。
我来说两句