apache – 多域设置上的htaccess:其他域不起作用

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

> .htaccess
> ***我的网站

> .htaccess
> index.php
> projects.php
> jobs.php
> some-project.php
> another-project.php
> some-job.php
> another-job.php ***

>其他域名
>其他域名
>其他域名

我有两个目标:

1.)root .htaccess文件应该确保在输入www.my-website.com时自动运行/执行我的主域/我的网站.由于我有一个多域ftp服务器,我需要指定它.这已经成功了.

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

>所以在/ my-website中我想忽略所有的.php后缀.
>我想要“伪造”目录,比如/ jobs / projects,这些目录实际上不是目录,而是php文件本身.

这是我迄今为止感谢@anubhava在这thread.

的DocumentRoot /的.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]

/my-website/.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]

但是我现在遇到这个问题,在我的网站上没有尾随.php的链接不起作用.我希望我的链接像/ projects一样工作但在我的网站上运行/ exectute /projects.php.然而,目前这不起作用,我得到404.
我还希望/ projects / some-project能够运行/执行/some-project.php(其中projects目录实际上并不存在),这也不起作用,也是404.

所以,总结一下.

>我的所有域名现在都有效!所以我的多域设置是save和handeld.
>但是在我/我的网站内部我希望所有链接都能正常运行而不会尾随.php和这个“假”目录

所以现在这个工作……

> www.my-website.com //有效
> www.other-domain.com //有效
> 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]

/my-website/.htaccess:

RewriteEngine On
RewriteBase /my-website/

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