我已经尝试在application.rb中添加它
config.action_controller.default_url_options = { :trailing_slash => true }
Run Code Online (Sandbox Code Playgroud)
以及:trailing_slash => true在routes.rb中
match '/download', to: 'welcome#download', via: 'get', :trailing_slash => true
Run Code Online (Sandbox Code Playgroud)
但似乎都不起作用.我搜索了rails 4.0 doc但找不到相关信息.我在这里错过了什么?
更新:
我试过添加
Rails.application.default_url_options[:trailing_slash] = true
Run Code Online (Sandbox Code Playgroud)
在filter_parameter_logging.rb因为这是在整个项目中,我唯一能找到的地方Rails.application.*,但它不工作要么.我在发布版本中找到了这一行,我使用的是4.0.4.我在错误的地方添加了这个吗?我在重新检查之前重新启动了服务器.
对于这个简单的问题感到抱歉,但是从我收集到的内容中也不trailing_slash应该反映在浏览器网址中,如果不是主要的话?因为这是我需要的,与历史相关.
url ruby-on-rails url-routing trailing-slash ruby-on-rails-4
我目前正在使用 React 和 Flask API 构建一个应用程序,但遇到了一些我不明白的 CORS 错误:
我有一个像这样的端点:
@app.route('/home/', methods=['GET'])
def home():
response = Response(
json.dumps(
get_data()
),
mimetype='application/json'
)
response.headers.add("Access-Control-Allow-Origin", "*")
return response
Run Code Online (Sandbox Code Playgroud)
如果我像这样从反应中调用这个端点,一切都会正常:
fetch('http://localhost:8080/home/')
.then(res => res.json())
.then((data) => {
setData(data)
})
.catch(console.log)
Run Code Online (Sandbox Code Playgroud)
但是,如果我按照 Flask API 中的方式设置路由'/home'(无尾部斜杠)并使用它调用它,fetch('http://localhost:8080/home)'则会出现 CORS 错误:Access to fetch at 'http://localhost:8080/home' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
虽然这对我的项目来说不是一个大问题,但我想了解这个尾部斜杠的变化是什么......
谢谢,
我的 Spring Boot 应用程序面临一个问题,其中我有一个仅处理 POST 请求的控制器。application.yml我已经在我的as中设置了上下文路径server.servlet.context-path: /context/path。目标是处理/context/path和/context/path/URL 的 POST 请求。
我的控制器看起来像这样:
@RestController
@RequestMapping("")
public class MyController {
@PostMapping({ "", "/" })
public ResponseEntity<String> handlePostRequest() {
// Handling POST request logic
return ResponseEntity.ok("POST request handled");
}
}
Run Code Online (Sandbox Code Playgroud)
当我向 发送 POST 请求时/context/path,它会被重定向为 302 状态代码,并且请求方法更改为 GET,并且会被重定向到/context/path/.
我尝试过@RequestMapping和的不同组合PostMapping。什么都没起作用。
我找到了一些推荐的解决方案来创建 WebConfiguration 并覆盖 configurePathMatch 方法。setUseTrailingSlashMatch但类似或 的方法setMatchOptionalTrailingSeparator已被弃用。
尽管做出了这些尝试,问题仍然存在。如何配置我的应用程序来处理带或不带尾部斜杠的请求?任何有关解决此问题的见解或建议将不胜感激。
我知道有一些重复内容(SEO)的问题,但这不是我的项目所关注的.
在我的骨干路由器中,我有这个:
routes: {
"": "startOrder",
"order/:orderNumber/:stepName": "getOrder",
"order/:orderNumber/:stepName/": "getOrder"
},
Run Code Online (Sandbox Code Playgroud)
请注意,第二条和第三条路线导致相同的事情.
问题是如果有人输入一个以"/"字符结尾的URL,我希望它调用一个单独的函数(然后删除斜杠),但这不会发生,它总是匹配空白路由.然后我会在以后遇到问题,因为URL有一个不应该的斜杠.
我错过了什么吗?
是否Retrofit从端点的相对URL中删除尾部斜杠?我尝试在我的一个端点上添加尾部斜杠但是当我单步调试并查看Call对象时,如果我钻入delete.relativeUrl,它不会显示尾部斜杠.
我正在尝试通过 Python 上的 boto3 将一些文件上传到 S3 上的存储桶中。
这些文件名是网站地址(例如 www.google.com/gmail)。
我希望文件名是网站地址,但实际上它创建了一个名为“www.google.com”的文件夹,并在上传的名为“gmail”的文件中
我试图在尾部斜杠之前用双斜杠和反斜杠解决它,但没有用。
有没有办法忽略尾部斜杠并上传其名称为网站地址的文件?
谢谢。
我在我的网站的根文件夹下使用htaccess规则以删除文件扩展名并在末尾添加尾部斜杠.但是,我想从根文件夹htaccess规则中排除子目录/ sub-dir /.我试图将另一个htaccess添加到/ sub-dir /文件夹并放入RewriteOptions inherit或RewriteEngine Off放在文件中,但它们都不起作用.
RewriteEngine On
RewriteBase /
# redirect from non-www to www
RewriteCond %{HTTP_HOST} ^mywebsite.com.au$ [NC]
RewriteRule ^(.*)$ http://www.mywebsite.com.au/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteRule ^(.*)index.php$ http://www.mywebsite.com.au/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.php [L]
# Remove trailing slash:
RewriteRule (.*)/$ $1 [L]
# Now test without the trailing slash:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_FILENAME}.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)
任何建议都非常感谢.
谢谢
我目前有一个网站,客人可以使用任意数量的斜杠访问每个网址,以分隔文件夹名称.例如,如果URL应该是:
http://example.com/one/two/three/four
Run Code Online (Sandbox Code Playgroud)
然后,用户可以通过以下任何一种方式访问同一页面:
http://example.com/one//two///three////four/////
http://example.com/one/two////three/four/////
http://example.com///one///////////two////three/four/
http://example.com///////////one///////////two/three/four
Run Code Online (Sandbox Code Playgroud)
但是,我希望上面的示例网址仅将用户重定向到此网址:
http://example.com/one/two/three/four
Run Code Online (Sandbox Code Playgroud)
这是我的.htaccess文件,试图阻止巨大的斜杠:
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]
RewriteRule ^(.*)/+$ /$1 [R=301,L,NC]
RewriteCond %{REQUEST_URI} ^/+(.*)/+$
RewriteRule .* /%1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
第三行成功停止长URL的尾部斜杠.第4行和第5行是我尝试在域名后立即停止斜杠,但这是不成功的.
我问这个问题的原因是因为我不希望谷歌抓住我的重复内容,并且在网站上有活跃的adsense,谷歌可能会扫描我访问的所有网址.
有没有RewriteCond/RewriteRule组合我可以用来剥去中间斜线或者它更复杂?
.htaccess ×2
apache ×2
slash ×2
url-routing ×2
amazon-s3 ×1
backbone.js ×1
cors ×1
endpoint ×1
flask ×1
javascript ×1
mod-rewrite ×1
php ×1
reactjs ×1
retrofit ×1
retrofit2 ×1
spring-boot ×1
url ×1