htaccess 多域设置:其他域不起作用

2024-01-31

我的服务器上有一个看起来像这样的多域设置……这是结构模型:

  • .htaccess
  • ***my-website
    • .htaccess
    • 索引.php
    • 项目.php
    • jobs.php
    • 一些项目.php
    • 另一个项目.php
    • 一些工作.php
    • 另一个工作.php***
  • 其他域
  • 其他域
  • 其他域

我有两个目标:

1.)根 .htaccess 文件应该确保我的主域是/my-website输入时自动运行/执行www.my-website.com。由于我有一个多域 ftp 服务器,我需要指定这一点。那已经在起作用了。

2.)在我的子目录中/my-website我需要一些不同的规则,特别是关于更好的 url 设计和省略 .php 扩展名。

  • So in /my-website我想忽略一切.php后缀。
  • 我想“伪造”目录,例如/jobs /projects它们实际上不是目录,而是 php 文件本身。

这就是我到目前为止所拥有的,感谢@anubhavathread https://stackoverflow.com/questions/27607911/htaccess-mod-rewrite-link-to-subdirectory-from-root-neglect-dirs-in-subdirect.

文档根目录/.htaccess:

RewriteEngine On
RewriteBase /

RewriteRule ^projects/(.+?\.php)$ /$1 [L,NC]
RewriteRule ^jobs/(.+?\.php)$ /$1 [L,NC]
RewriteRule ^(downloads/.+)/?$ assets/$1 [L,NC]

# add .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

RewriteCond %{REQUEST_URI} !^/my-website/
RewriteCond %{DOCUMENT_ROOT}/my-website%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/my-website%{REQUEST_URI} -d
RewriteRule ^(.*)$ /my-website/$1 [L]

/我的网站/.htaccess:

RewriteEngine On
RewriteBase /my-website/

# add .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/my-website/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

但是我现在使用这个时遇到问题,即my-website没有尾随的链接.php不会工作。我希望我的链接能够像/projects但运行/执行/projects.php在我的网站中。不过目前这不起作用,我得到了 404。 我也想要/projects/some-project运行/执行/some-project.php(其中projects目录实际上并不存在),这也不起作用,也是 404。

所以,总结一下。

  • 我的所有域名现在都可以使用了!所以我的多域设置是保存和手持的。
  • 然而里面/my-website我希望所有链接都可以正常工作,而无需尾随 .php 并使用此“伪造”目录

所以现在这有效……

  • www.my-website.com // works
  • www.other-domain.com // works
  • www.my-website.com/projects // 如果没有尾随 .php 则不起作用
  • www.my-website.com/projects.php // 有效(运行projects.php)
  • www.my-website.com/projects/some-project // 不起作用(应该运行 some-project.php)
  • www.my-website.com/projects/some-project.php // 有效(运行 some-project.php)

拥有 root .htaccess 像这样:

RewriteEngine On
RewriteBase /

## COMMENT out these 2 rules
# RewriteRule ^projects/(.+?\.php)$ /$1 [L,NC]
# RewriteRule ^jobs/(.+?\.php)$ /$1 [L,NC]

RewriteRule ^(downloads/.+)/?$ assets/$1 [L,NC]

# add .php extension
RewriteCond %{DOCUMENT_ROOT}/my-website/$1\.php -f [NC]
RewriteRule ^(?:[^/]+/)?([^/]+)/?$ my-website/$1.php [L]

RewriteCond %{HTTP_HOST} ^(www\.)?my-website\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/my-website/ [NC]
RewriteRule ^(.*)$ my-website/$1 [L]

# add .php extension 2 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(?:[^/]+/)?([^/]+)/?$ $1.php [L]

/我的网站/.htaccess:

RewriteEngine On
RewriteBase /my-website/

# add .php extension
RewriteCond %{DOCUMENT_ROOT}/my-website/$1\.php -f [NC]
RewriteRule ^(?:[^/]+/)?([^/]+)/?$ $1.php [L]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

htaccess 多域设置:其他域不起作用 的相关文章

随机推荐