我的服务器上有一个看起来像这样的多域设置……这是结构模型:
- .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(使用前将#替换为@)