.htaccess 使用htaccess更新浏览器默认mod_重写字符串

.htaccess 使用htaccess更新浏览器默认mod_重写字符串,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我有一个我知道是愚蠢的问题,但在某处和其他地方的答案并没有告诉我应该怎么做 我有一个.htaccess Mod_rewrite,它将字符串作为index.php?nm=中的值使用,如下所示: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ index.php?pagenm=$1 [QSA] 我想将htaccess设置为显示我的页面,即使URI设置了nopagen

我有一个我知道是愚蠢的问题,但在某处和其他地方的答案并没有告诉我应该怎么做

我有一个.htaccess Mod_rewrite,它将字符串作为
index.php?nm=
中的值使用,如下所示:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?pagenm=$1 [QSA]
我想将htaccess设置为显示我的页面,即使URI设置了no
pagenm
值,例如:
www.mywebsite.com/
确实可以很好地加载,因为index.php页面有一个捕获规则,用于在给定no
pagenm
值时使用页面中的默认值,但是我想要的是浏览器URL被更新(希望没有刷新、重定向、加载页面两次):

如果未给出任何值,则htaccess将重写为
welcome
,以便:

 www.mywebsite.com
将始终在浏览器中显示为

 www.mywebsite.com/welcome
我尝试了
DirectoryIndex welcome
,但这不会更新URL

试试这些规则:

RewriteEngine On

# if landing page redirect to /welcome
RewriteRule ^/?$ /welcome [L,R=302]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?pagenm=$1 [QSA,L]

根据定义,这是一个重定向,但由于服务器正在处理重定向,因此实际上不会加载页面两次。您从服务器返回标题,浏览器ping新地址并点击它。类似于
Redirect”/“/welcome”
的东西就足够了。另一种方法是使用JS重写历史记录,但不考虑重定向需要花费大量精力。如果没有mod_rewrite字符串,我如何告诉htaccess我将默认的
索引
页面作为mod_rewrite
/welcome
并重新加载?只要最后的PHP页面不加载两次,这就是我想要避免的。我刚刚编辑了评论,你问:)下面的答案加了302(找到)。一个很好的补充!这就是我要找的,我不确定空字符串检查的
^/?$
语法。非常感谢你,阿努巴瓦!!