我一直在阅读并努力无济于事。
我有一个这样的网址:http://my-domain.com/index.pl?see=this&foo=that&bar=that
我想要显示如下:
http://my-domain.com/index.pl/this
现在让我把它扔出去!
“看”值必须是“友好”。但是,看见可能位于网址的不同位置!
例如:http://my-domain.com/index.pl?foo=that&see=this&bar=that
(可以通过http://www
或没有www访问。)
我在这里和其他地方阅读了一些帖子,但没有发现任何用我能理解的例子向我解释这一点。
如果可能的话,我甚至想放弃“.pl”!
抱歉这样的菜鸟......我需要帮助。
这是我拥有的整个htaccess文件:
RewriteEngine on
RewriteRule ^/index.html$ /index.pl [L]
RewriteRule index/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/$ /index.pl?$1=$2&$3=$4&$5=$6
我还试图让index.html指向index.pl
谢谢..
答案 0 :(得分:2)
如果您正在使用Apache,那么您正在寻找mod_rewrite。它与perl无关:)
答案 1 :(得分:1)
你可能最好将URL参数传递给脚本并在那里进行剩余的处理,因为它会给你更多的灵活性,你将处理Perl而不是使你的mod_rewrite规则复杂化。 .htaccess
文件中的这类内容应该可以解决问题:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /path/to/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^request(/.*)?$ /path/to/index.pl [L]
</IfModule>
RewriteCond
指令用于防止重写现有文件和目录的路径。如果您必须删除它们,请确保index.pl
的路径不会被重写,或者mod_rewrite将在每个请求中进入循环。
然后,您可以从$ENV{REQUEST_URI}
内的index.pl
抓取所有内容,将字符串拆分为斜线并验证并适当地分配您的参数。
注意:我建议不要使用index
作为请求路径,因为Apache的默认配置可能会覆盖该关键字(就像我的情况一样)。
答案 2 :(得分:-1)
您可以使用REST界面:
http://my-domain.com/index.pl/see/this
或
http://my-domain.com/index.pl/this
您基本上拥有index.pl脚本(或将其重命名为您想要的任何内容),查看每个请求的URL路径($ ENV {REQUEST_URI})