繁体   English   中英

.htaccess在目录中重写 - 隐藏PHP扩展并强制尾随斜杠

[英].htaccess Rewrite Within Directory - Hide PHP extension and force trailing slash

我正在尝试从我的文件中隐藏.php扩展名,并在生成的URL上强制使用尾部斜杠。

示例:对/about.php的请求将变为/ about /,对/ about的请求将变为/ about /。

当我在hostdomain的根目录时,以下重写代码完美运行:

RewriteEngine On
RewriteRule ^(.*)/$ /$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://edit.mydomain.org/$1/ [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)\.php\ HTTP/ [NC]
RewriteRule .+ http://edit.mydomain.org/%1  [R=301,QSA]

但是,我需要将我的文件移动到此主机名的目录中。 将目录名称添加到规则并在目录中具有.htaccess根本不起作用,并且似乎导致无限重定向。

我查看了StackOverflow和其他网站并尝试了大量示例,最终出现了许多不同的错误,其中最常见的是:

  • 一切都是无休止的重定向。
  • 除目录主页之外的所有内容都是500错误。
  • about.php重定向到/ about但是没有重定向到/ about /和/ about /显示500错误。
  • 一切正常,但主页(目录)index.php在没有文件名的情况下访问时会进入无限重定向。
  • 事情重定向到edit.mydomain.org/home/username/public_html/mydomain.org/edit/pagename.php,这显然不存在。

谢谢你的帮助! 我确实需要将这些文件保存在一个目录中,尽管.htaccess可以在需要时进入主机名root。

这个目录是edit.mydomain.org/dave/

将其保存为.htaccess并将其放在'dave'目录中

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ http://edit.mydomain.org/dave/$1/ [R=301,L]

RewriteRule ^(.*)/$ $1.php [L]

这适合我

RewriteBase /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM