簡體   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