重定向通配符 URL 而不更改地址栏
Redirect wildcard URL without changing address bar
我有一个网站使用 Apple 通用 links 与他人分享应用程序事件。在未安装该应用程序的设备上打开一个事件 link 应该会显示一个允许用户下载它的站点,但它也应该保持地址不变。这样做的原因是,当在 Messenger 等应用程序中打开通用 link 时,也会显示此页面,其中会有一个标签,要求用户按“在 safari 中打开”。按下该按钮必须在 safari 中打开初始 link 才能正确打开应用程序。
网站看起来像这样:
www.website.com/event/<event_id_wildcard>
然后将向用户显示站点:
同时在地址栏中保留初始 link。
我需要使用我的 .htaccess 文件来完成此操作,并且由于我不是自己托管服务器而是通过网络托管服务,因此很难更改任何更深层次的设置。
我尝试使用 RewriteEngine
RewriteCond
和 RewriteRule
,通过查看这些问题以及其他问题,但没有任何运气:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^/event/.*$
RewriteRule ^(.*)$ http://website.no/invite [P,NC,QSA]
这是一个相当紧迫的问题,我还没有时间了解各种标志
Redirect wildcard subdomains to subdirectory, without changing URL in address bar
How can I use htaccess to redirect paths with a wildcard character
https://gist.github.com/ScottPhillips/1721489
** 更新 **
完整的 .htaccess:
# Begin
RewriteEngine on
<Files "apple-app-site-association">
ForceType 'application/json'
</Files>
# Handle wildcard links
#RedirectMatch 301 ^/event/.*$ http://www.website.no/invite
RewriteRule ^event/[\w-]+/?$ invite [L,NC]
# Enforce SSL
# Handle non-www URLs
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^website\.no [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Handle www URLs
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.website\.no [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Handle URLs without .html extension
RewriteCond %{REQUEST_METHOD} ^(GET) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*) .html [L]
# End
这样说:
开始
RewriteEngine on
<Files "apple-app-site-association">
ForceType 'application/json'
</Files>
# Enforce SSL
# Handle non-www URLs
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
# Handle wildcard links
#RedirectMatch 301 ^/event/.*$ http://www.website.no/invite
RewriteRule ^event/[\w-]+/?$ invite [L,NC]
# Handle URLs without .html extension
RewriteCond %{REQUEST_METHOD} ^(GET) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*) .html [L]
# End
确保在测试时清除浏览器缓存。
我有一个网站使用 Apple 通用 links 与他人分享应用程序事件。在未安装该应用程序的设备上打开一个事件 link 应该会显示一个允许用户下载它的站点,但它也应该保持地址不变。这样做的原因是,当在 Messenger 等应用程序中打开通用 link 时,也会显示此页面,其中会有一个标签,要求用户按“在 safari 中打开”。按下该按钮必须在 safari 中打开初始 link 才能正确打开应用程序。
网站看起来像这样:
www.website.com/event/<event_id_wildcard>
然后将向用户显示站点:
同时在地址栏中保留初始 link。
我需要使用我的 .htaccess 文件来完成此操作,并且由于我不是自己托管服务器而是通过网络托管服务,因此很难更改任何更深层次的设置。
我尝试使用 RewriteEngine
RewriteCond
和 RewriteRule
,通过查看这些问题以及其他问题,但没有任何运气:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^/event/.*$
RewriteRule ^(.*)$ http://website.no/invite [P,NC,QSA]
这是一个相当紧迫的问题,我还没有时间了解各种标志
Redirect wildcard subdomains to subdirectory, without changing URL in address bar
How can I use htaccess to redirect paths with a wildcard character
https://gist.github.com/ScottPhillips/1721489
** 更新 **
完整的 .htaccess:
# Begin
RewriteEngine on
<Files "apple-app-site-association">
ForceType 'application/json'
</Files>
# Handle wildcard links
#RedirectMatch 301 ^/event/.*$ http://www.website.no/invite
RewriteRule ^event/[\w-]+/?$ invite [L,NC]
# Enforce SSL
# Handle non-www URLs
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^website\.no [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Handle www URLs
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.website\.no [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Handle URLs without .html extension
RewriteCond %{REQUEST_METHOD} ^(GET) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*) .html [L]
# End
这样说:
开始
RewriteEngine on
<Files "apple-app-site-association">
ForceType 'application/json'
</Files>
# Enforce SSL
# Handle non-www URLs
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
# Handle wildcard links
#RedirectMatch 301 ^/event/.*$ http://www.website.no/invite
RewriteRule ^event/[\w-]+/?$ invite [L,NC]
# Handle URLs without .html extension
RewriteCond %{REQUEST_METHOD} ^(GET) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*) .html [L]
# End
确保在测试时清除浏览器缓存。