我正在部署一个ror应用程序,现在我必须重写url(在apache中)
所以我采取了以下方法:
RewriteCond %{REQUEST_URI} ^/[^\.]+[^/]$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
RewriteCond %{HTTP_HOST} ^foo\.com
RewriteRule ^(.*)$ http://www.foo.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
问题是它将两个尾部斜杠附加到我的URL所以例如资源/问题/问题正在变为:
http://foo.com//question/ask
Run Code Online (Sandbox Code Playgroud)
我试图在我的所有重写规则之前添加以下规则以尝试删除双//:
RewriteCond %{REQUEST_URI} ^//
RewriteRule ([^/]*)/+(.*) http://www.foo.com/$1/$2 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
但它没有工作..任何想法扯掉所有额外的"//"添加到网址?
所有,
我有以下Zend应用程序结构:
helloworld
- application
- configs
- controllers
- models
- layouts
- include
- library
- public
- design
-- css
-- site.css
-- js
-- global.js
-- images
-- siteheader.gif
-- sitefooter.gif
- .htaccess
- index.php
Run Code Online (Sandbox Code Playgroud)
公用文件夹中的.htaccess文件如下所示:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
我的文档根指向"public"文件夹.目前,如果用户访问目录级URL,(例如:http:// localhost/design 或localhost/css),上面的.htaccess文件确保向他显示"禁止访问"页面.但如果他访问文件级URL,(例如:http://localhost/design/css/site.css),它会向他显示CSS文件或js文件或PHP文件.
如果直接从URL访问,如何确保锁定上述文件类型的文件级访问权限?由于我的应用程序是JS密集型的,我想保护它免受用户的关注.
谢谢
通常我用
<base href="http://domain.com/" /><!--[if ie]></base><![endif]-->
Run Code Online (Sandbox Code Playgroud)
我没有尝试过RewriteBase,我通常会感到困惑并不断改变它直到它工作.哪种方法最好,我显然找到了最佳解决方案,因为链接保持不变,因此在附加css文件时大多数情况下不会断开任何链接,例如
访问子目录时,它始终保持不变.虽然,当我不使用标签,并且我访问子目录时,它在我使用时打破了css链接
<link href="css/main.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
由于我的PHP文档将包含标题,
<?php include("include/global_header.php"); ?>
Run Code Online (Sandbox Code Playgroud)
如果我没有这样做,我将不得不使用:
<link href="../css/main.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
访问子目录时可能会中断.
那么...... RewriteBase的工作原理是否相同?
你的意见.
我有mod_rewrite在我的大部分网站上工作.现在我有一个通常会指向的搜索
search.php?keyword=KEYWORD
Run Code Online (Sandbox Code Playgroud)
而我正在尝试重写它
search/?keyword=KEYWORD
Run Code Online (Sandbox Code Playgroud)
只是为了让它更清洁一点.所以这是我的mod_rewrite.(还有其他规则我只是发布了一个不起作用的规则.)
RewriteRule ^search/?keyword=([^/\.]+)/?$ search.php?search=$1
Run Code Online (Sandbox Code Playgroud)
当我在地址栏中输入我希望它的搜索方式时,我得到一个页面告诉我它是一个"断开链接"(我猜这是Chrome相当于404错误).那么我做错了什么?我认为问题是'='或'?' 登录规则(第一部分),因为当我将?keyword = part取出时,它可以正常工作.那有意义吗?
编辑:这是我的完整.htaccess代码:
RewriteEngine on
RewriteRule ^$ index.php
RewriteRule ^thoughts$ archives.php
RewriteRule ^thoughts/$ archives.php
RewriteRule ^about$ about.php
RewriteRule ^about/$ about.php
RewriteRule ^search/\?keyword=([^/]+)$ search.php?search=$1
RewriteRule ^tags/([^/]+)$ tags.php?tag=$1
RewriteRule ^thoughts/([^/]+)$ post.php?title=$1 [L]
Run Code Online (Sandbox Code Playgroud)
仍有错误页面...
我理想的设置是获取当前客户端站点,上传带有正则表达式的.htaccess,与URI匹配,如果找到某个文件扩展名,它将使用相同的路径,但域名更改.
即.
正常路径:
http://www.domain.com/something/images/someimage.jpeg
http://www.domain.com/assets/js/jquery.js
.htaccess翻译将上述内容变为:
http://mycdn.other.com/something/images/someimage.jpeg
http://mycdn.other.com/assets/js/jquery.js
我连续几个小时用谷歌搜索,没有运气.同样,这是为了实际使用亚马逊的CloudFront.S3已经安装到网站上,用于使用s3fs备份和存储文件,但由于它直接使用S3而不是使用CloudFront,因此无法解决问题.
我在内部wordpress重写规则方面遇到了麻烦.我已经阅读了这个帖子,但我仍然无法得到任何结果:WordPress插件中的wp_rewrite
我解释一下我的情况:
1)我有一个名为'myplugin_template.php'的page_template与一个名为"mypage"的wordpress页面相关联.
<?php
get_header();
switch ($_GET['action']) {
case = "show" {
echo $_GET['say'];
}
}
get_footer();
?>
Run Code Online (Sandbox Code Playgroud)
2)我需要为此链接创建重写规则:
如果我使用这个url所有的东西都没有问题,但我想实现这个结果:
http://myblog/mypage/say/hello_world/
Run Code Online (Sandbox Code Playgroud)
我真的不想破解我的.htaccess文件,但我不知道我怎么能用内部的wordpress重写器做到这一点.
我需要一些重写规则的帮助
我的几乎所有页面都是这样的:
index.php?key=guild&id=939&view=board
index.php?key=player&id=300941&view=edit
index.php?key=mod&id=41&view=download
Run Code Online (Sandbox Code Playgroud)
我可以使用1个重写规则吗?因为我的所有页面都有相同的$ _get
/guild/939/board
/player/300941/edit
Run Code Online (Sandbox Code Playgroud) 我打算在我的网站上使用大量的URL重写,但我不熟悉Apache的mod_rewrite,因为它很难记录.
我听说有一些选项允许调用各种脚本进行重写.你能帮帮我吗?
我要像做www.mydomain.com/page-slug点www.mydomain.com/custom-pages/view/page-slug,像WordPress的.我怎么能在CakePHP中做到这一点.
例如:www.example.com/about.php
我不希望扩展名为.php的文件可以访问,而是显示404页面.
我有根文件夹中的文件:content.php about.php footer.php等...现在我可以通过输入到地址栏来访问这些文件.我想限制这个.
我怎样才能做到这一点?