我设置了一个网页,用户可以在其中导航到页面上的某个项目,如下所示:
www.example.com/models.php#DDD-34
目前它使用#
符号来表示我想要链接到的项目的代码。是否可以使用.htaccess来设置/
符号而不是#
所以代替以上链接到项目
www.example.com/models.php/DDD-34
无论如何这是否可行?因为/
表示它带来404错误的路径。什么.htaccess代码允许这个?
答案 0 :(得分:0)
当你整理这样的解决方案时,你需要考虑一些事情。 #
是客户端元素,它永远不会作为请求的一部分发送到服务器。这意味着,即使您希望能够转到www.example.com/models.php/DDD-34
,htaccess可以为您做的唯一事情就是将浏览器外部重定向返回www.example.com/models.php#DDD-34
。而已。服务器不知道如何处理#DDD-34
部分,因为这是浏览器上运行的javascript理解的内容。
如果你对浏览器的位置栏改回www.example.com/models.php#DDD-34
没问题,那么这就是你需要的:
RewriteEngine On
RewriteRule ^models\.php/(.*)$ /models.php#$1 [L,R,NE]
答案 1 :(得分:0)
您可以在.htaccess文件中添加以下内容:
RewriteEngine On
RewriteRule ^models.php/(.*)$ /models.php?item=$1 [L,NC,QSA]
然后有一个服务器端脚本(比方说PHP)填写导航到该锚点所需的javascript:
<script> location.hash = "#" + <?=$_GET['item'];?>; </script>
<?=$_GET['item'];?>
将使用PHP添加项目。 (注意:如果使用PHP,您可能希望使用以下内容进一步保护该段代码:<?=addslashes($_GET['item']);?>
另外,您可以使用Jon Lin的答案并结合使用 javascript to grab the hash item 和 HTML5's pushstate 来实现您的目标希望不使用服务器端脚本。