我第一次遇到了一个问题,并且不知道为什么我有这个问题。
下面你看到我的.htaccess文件的三行。使用/urun/test-123
的{{1}}时,urundetay.php
必须使用/urunlerimiz/
。问题是因为'urunlerimiz'中包含'urun',所有这三个链接都使用urunlerimiz.php
。
urundetay.php
当我将这些参数设置为完全不同时,它可以正常工作。但我必须这样使用它,我想学习。 解决方案是什么?
答案 0 :(得分:1)
您需要在模式中使用否定前瞻,以便字符串lerimiz
不会产生匹配。因此,RewriteRule
RewriteRule ^urun(?!lerimiz)/?(.*)$ urundetay.php [NC]
所使用的正则表达式模式与Perl兼容,您应该能够这样做:
{{1}}
答案 1 :(得分:1)
我在我的一个项目中遇到过这个问题,这就是我解决它的方法:
RewriteRule ^urunlerimiz(/.*|)$ urunlerimiz.php [NC,L]
RewriteRule ^urun(/.*|)$ urundetay.php [NC,L]
RewriteRule ^urun-kategor(/.*|)$ urundetay.php [NC,L]
欺骗是在每个关键字后附加(/.*|)
。
e.g。对于正则表达式^urun(/.*|)$
,这将匹配/urun
或/urun/
或/urun/foo
但不匹配/urunlerimiz
和/urun-kategor