所以我有个问题
1.基本网站位于http://example.com/
1.位于http://example.com/web2/
的第二个网站
1.向第二个网站(如http://example.com/myWeb/pg1
和http://example.com/web2/pg2
)发出各种请求的用户
最近,由于一些其他问题,我需要有一个自定义的第二个网站的新路径,但也保持第一个工作。
其想法是允许用户通过以下两个地址访问第二个网站:
http://example.com/web2/
http://example.com/alternative-url-web2/
文件夹/web2/
实际上存在于服务器上,但是我如何模拟文件夹/alternative-url-web2/
并将请求“重定向”到/web2/
?
请注意,我不希望浏览器上的URL改变,这必须是一个“沉默的重定向”。我也确保所有其他的请求,如http://example.com/other
没有被重定向的第二个网站。
- 谢谢-谢谢
更新:
根据@anubhava,我可以简单地通过添加我的.htaccess
来解决这个问题:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^alternative-url-web2(/.*|)$ /web2$1 [L,NC]
这可能工作正常,但我注意到以下问题:
http://ex.com/alternative-url-web2
被重定向到http://ex.com/web2/
(更改浏览器URL);http://ex.com/alternative-url-web2/
被重定向到http://ex.com/
(更改浏览器URL);http://ex.com/alternative-url-web2/someRequest
工作正常,不会更改浏览器URL;http://ex.com/alternative-url-web2/index.php
工作正常,不会更改浏览器URL;
站点注解:
在/web2/
处有一个.htaccess
,* 可能 * 导致上述有线重定向行为...因此,以下是文件内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
是否是index.php
的内部重写规则导致了这一切?如果是,我该如何修复它?
3条答案
按热度按时间5jvtdoz21#
通过
httpd.conf
启用mod_rewrite和.htaccess,然后将以下代码放在DOCUMENT_ROOT
目录下的.htaccess
中:替代代码:
vecaoik12#
这是一个非常简单的重写。在文档根目录下的htaccess文件中,只需添加以下内容:
与重定向不同,重定向使浏览器/客户端发送一个新的URL请求(从而改变浏览器位置栏中的内容),重写完全发生在服务器端。
qncylg1j3#
顺便说一句,为了跟踪htaccess重定向的踪迹,你可以在每个重定向中添加如下内容:
您可以在开发人员工具的响应中检查这些内容。